Como procurar na pesquisa elastica
estou a usar a pesquisa elastica para filtrar e procurar a partir do ficheiro json e sou novato nesta tecnologia. Então eu estou um pouco confuso como escrever como consulta na pesquisa elastica.
select * from table_name where 'field_name' like 'a%'
Esta é a pergunta mysql. Como escrevo esta consulta na pesquisa elastica? Eu estou Usando elasticsearch versão 0.90.7.
2 answers
Esta questão não é suficientemente específica, pois há muitas maneiras de a ElasticSearch poder cumprir esta funcionalidade, e elas diferem ligeiramente no seu objectivo global. Se você está procurando replicar essa consulta SQL exatamente, então, neste caso, use a consulta wildcard ou a consulta de prefixo.
Usando um wildcard query:
Nota: Tenha cuidado com as buscas por cartões são lentas. Evite usar wildcards no início de suas cordas.
GET /my_index/table_name/_search
{
"query": {
"wildcard": {
"field_name": "a*"
}
}
}
GET /my_index/table_name/_search
{
"query": {
"prefix": {
"field_name": "a"
}
}
}
Nota: do NOT blindly use partial matching, while there are corner cases for it's use, correct use of analyzers is almost always better.
Também esta consulta exata será equivalente a LIKE '%a%'
, que novamente, poderia ser melhor configurada com o uso correto do mapeamento e uma consulta normal procurem!
GET /my_index/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "a"
}
}
}
Se estás a ler isto a perguntar-te sobre o ES de forma semelhante para o tipo de pesquisa, eu sugeriria ler em edge-ngrams , que se relacionam com o uso adequado do mapeamento, dependendo do que estás a tentar fazer=)
GET /indexName/table_name/_search
{
"query": {
"match_phrase": {
"field_name": "your partial text"
}
}
}
Pode usar "type" : "phrase_prefix"
para prefixar ou publicar a sua procura
Código Java para o mesmo:
AndFilterBuilder andFilterBuilder = FilterBuilders.andFilter();
andFilterBuilder.add(FilterBuilders.queryFilter(QueryBuilders.matchPhraseQuery("field_name",
"your partial text")));
Deu o exemplo 'e filtrar' para que possa adicionar filtros extra, se quiser. Assinale isto para mais detalhes:
Https://www.elastic.co/guide/en/elasticsearch/guide/current/slop.html