term
a consulta corresponde a um único termo, tal como está: o valor não é analisado . Portanto, não precisa estar em letras minúsculas dependendo do que você indexou.
Se você forneceu Bennett
no tempo do índice e o valor não foi analisado, a seguinte consulta não retornará nada:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
query irá analisar a entrada se analisadores forem definidos para o campo consultado e encontrar documentos que correspondam aos seguintes critérios:
- todos os termos devem aparecer no campo
- eles devem ter a mesma ordem do valor de entrada
Por exemplo, se você indexar os seguintes documentos (usando standard
analisador para o campo foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Esta match_phrase
consulta retornará apenas o primeiro e o segundo documentos:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
pesquisa de consulta, por padrão, em um campo _all que contém o texto de vários campos de texto de uma vez. Além disso, é analisado e oferece suporte a alguns operadores (AND / OR ...), curingas e assim por diante (consulte a sintaxe relacionada ).
Conforme as match_phrase
consultas, a entrada é analisada de acordo com o analisador configurado no campo consultado.
Ao contrário de match_phrase
, os termos obtidos após a análise não precisam estar na mesma ordem, a menos que o usuário tenha usado aspas ao redor da entrada.
Por exemplo, usando os mesmos documentos de antes, esta consulta retornará todos os documentos:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Mas esta consulta retornará os mesmos 2 documentos da match_phrase
consulta:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Há muito mais a dizer sobre as diferentes opções para essas consultas, por favor, dê uma olhada na documentação relacionada:
Espero que isso esteja claro o suficiente e ajude.