multiple - match query elasticsearch
¿Qué campo coincidió con la consulta en la búsqueda multi_match en Elasticsearch? (2)
Tengo una consulta con multi_match en Elasticsearch:
{
"query": {
"multi_match": {
"query": "luk",
"fields": [
"xml_string.autocomplete",
"state"
]
}
},
"size": 10,
"fields": [
"xml_string",
"state"
]
}
Funciona de maravilla, el resultado arroja el valor esperado:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 1,
"max_score": 0.41179964,
"hits": [
{
"_index": "documents",
"_type": "document",
"_id": "11",
"_score": 0.41179964,
"fields": {
"xml_string": "Lukas bla bla bla",
"state": "new"
}
}
]
}
}
He buscado mucho, pero no puedo averiguar qué campo coincide con la consulta (si fue xml_string O estado)
Hasta donde yo sé, no hay ninguna función para decirle qué campo ha coincidido con la consulta.
Pero puede usar la función de explicación para depurar su consulta. Solo tiene que agregar a su consulta el pamámetro &explain=true
. Con este parámetro, verá una explicación para cada campo de por qué está en el conjunto de resultados y adivinará qué campo coincidió con la consulta.
Encontré la solución: utilicé la función de resaltado y está funcionando bien
Así es como se ve mi rizo:
curl -X GET ''http://xxxxx.com:9200/documents/document/_search?load=false&size=10&pretty'' -d ''{
"query": {
"multi_match": {
"query": "123",
"fields": ["some_field", "another_field"]
}
},
"highlight": {
"fields": {
"some_field": {},
"another_field": {}
}
},
"size": 10,
"fields": ["field","another_field"]
}''