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.
match
consulta usa o analisador se o campo for analisado, então sim. Por padrão, ele retornará documentos que contenham pelo menos um dos termos (ver parâmetrooperator
) e a ordem não é importante.Acho que alguém definitivamente está procurando por diferenças entre eles no que diz respeito a PESQUISA PARCIAL. Aqui está minha análise com 'analisador padrão ' padrão : -
{"nome": “Olá”}
Agora, e se quisermos fazer uma pesquisa parcial com ell ???
Não vai funcionar, volte observando.
Não vai funcionar, volte observando.
Conclusão - O termo ou correspondência não consegue fazer pesquisa parcial
O resultado será {"name": "Hello"}
Não vai funcionar, volte observando.
Conclusão - o curinga é capaz de fazer pesquisa parcial com apenas um token
Irá dar resultado {"nome": “Olá”}
Irá dar resultado {"nome": “Olá”}.
Conclusão - query_string é capaz de pesquisar com dois tokens fornecidos
-> aqui os tokens são ell e zz
fonte
wildcard is able to do partial search with one token only
: mais precisamente, aswildcard
consultas por padrão funcionam apenas emkeyword
campos , que são, por definição, token único. Isso não tem nada a ver com o conteúdo do campo ser mais do que uma palavra. Em sua consulta curinga, "ozzy hello" corresponderia.