term
consulta coincide con un solo término tal como está: el valor no se analiza . Por lo tanto, no tiene que estar en minúsculas dependiendo de lo que haya indexado.
Si proporcionó Bennett
en el momento del índice y el valor no se analiza, la siguiente consulta no devolverá nada:
{
"query": {
"term" : { "user" : "bennett" }
}
}
match_phrase
query analizará la entrada si se definen analizadores para el campo consultado y encuentra documentos que coincidan con los siguientes criterios:
- todos los términos deben aparecer en el campo
- deben tener el mismo orden que el valor de entrada
Por ejemplo, si indexa los siguientes documentos (usando el standard
analizador para el campo foo
):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Esta match_phrase
consulta solo devolverá el primer y segundo documento:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_string
búsqueda de consulta, de forma predeterminada, en un campo _todos que contiene el texto de varios campos de texto a la vez. Además de eso, se analiza y admite algunos operadores (Y / O ...), comodines, etc. (consulte la sintaxis relacionada ).
Como match_phrase
consultas, la entrada se analiza de acuerdo con el analizador configurado en el campo consultado.
A diferencia de match_phrase
, los términos obtenidos después del análisis no tienen que estar en el mismo orden, a menos que el usuario haya utilizado comillas alrededor de la entrada.
Por ejemplo, utilizando los mismos documentos que antes, esta consulta devolverá todos los documentos:
{
"query": {
"query_string": {
"query": "hello World"
}
}
}
Pero esta consulta devolverá los mismos 2 documentos que la match_phrase
consulta:
{
"query": {
"query_string": {
"query": "\"Hello World\""
}
}
}
Hay mucho más que decir sobre las diferentes opciones para esas consultas, eche un vistazo a la documentación relacionada:
Espero que esto sea lo suficientemente claro y ayude.
match
consulta usa el analizador si se analiza el campo, así que sí. Por defecto, devolverá documentos que tengan al menos uno de los términos (ver parámetrooperator
) y el orden no es importante.Creo que alguien definitivamente está buscando diferencias entre ellos con respecto a la BÚSQUEDA PARCIAL Aquí está mi análisis con el 'analizador estándar' predeterminado : -
{"name": "Hola"}
Ahora, ¿qué pasa si queremos hacer una búsqueda parcial con ell ???
No funcionará, vuelva señalando.
No funcionará, vuelva señalando.
Conclusión : el término o la coincidencia no pueden realizar búsquedas parciales en absoluto
Funcionará, dará el resultado {"name": "Hello"}
No funcionará, vuelva señalando.
Conclusión : el comodín puede realizar una búsqueda parcial con un solo token
Funcionará, dará el resultado {"nombre": "Hola"}
Funcionará para dar el resultado {"nombre": "Hola"}.
Conclusión : query_string puede buscar con dos tokens dados
-> aquí token son ell y zz
fuente
wildcard is able to do partial search with one token only
: más precisamente, laswildcard
consultas de forma predeterminada solo funcionan enkeyword
campos , que por definición son de un solo token. Eso no tiene nada que ver con que el contenido del campo sea más de una palabra. En su consulta con comodines, "ozzy hello" coincidiría.