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.