elasticsearch - multiple - match query does not support
Elastic Search anidado consulta multimatch (2)
Cambiar su asignación a la siguiente que utiliza include_in_root: true
le permitirá usar la consulta que escribió originalmente:
{
"abstract": {
"properties": {
"summary": {
"type": "string"
}
}
},
"authors": {
"type": "nested",
"include_in_root": true,
"properties": {
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
}
}
}
}
Es posible que desee indexar objetos internos como campos anidados y como campos de objetos planos. Esto se puede lograr estableciendo include_in_parent en true. - Link
Nota: include_in_root
puede estar en desuso en versiones futuras de copy_to
en favor de copy_to
.
Así que mi problema es básicamente el mismo que se describe here , sin embargo, aún permanece sin respuesta en el grupo.
Mi mapeo:
{
"abstract": {
"properties": {
"summary": {
"type": "string"
}
}
},
"authors": {
"type": "nested",
"properties": {
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
}
}
}
}
Y me gustaría realizar una búsqueda de texto completo en ambos campos, probablemente con una ponderación desigual. La consulta que me viene a la mente, pero desafortunadamente no funciona, sería esta:
{
"query": {
"bool": {
"should": [{
"multi_match": {
"query": "higgs boson",
"fields": ["abstract.summary^5", "author.last_name^2"]
}
}]
}
}
}
No obtengo ningún resultado del campo de autores, debido a su mapeo anidado. Tampoco puedo deshacerme de la propiedad anidada, la uso para agregaciones. ¿Alguna idea elegante de cómo resolverlo?
La única solución que logré encontrar, que no es práctica ni elegante pero que de alguna manera funciona, es la siguiente consulta:
"query": {
"bool": {
"should": [
{
"nested": {
"path": "authors",
"query": {
"multi_match": {
"query": "higgs",
"fields": ["last_name^2"]
}
}
}
},
{
"multi_match": {
"query": "higgs",
"fields": ["abstract.summary^5"]
}
}
]
}
}
Tampoco estoy seguro de si el impulso funcionará como se espera, siempre que se establezca en diferentes consultas. Cualquier sugerencia apreciada.