termconsulta 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ó Bennetten 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 standardanalizador para el campo foo):
{ "foo":"I just said hello world" }
{ "foo":"Hello world" }
{ "foo":"World Hello" }
Esta match_phraseconsulta solo devolverá el primer y segundo documento:
{
"query": {
"match_phrase": {
"foo": "Hello World"
}
}
}
query_stringbú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_phraseconsultas, 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_phraseconsulta:
{
"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.
matchconsulta 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, laswildcardconsultas de forma predeterminada solo funcionan enkeywordcampos , 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.