what - Orden de agregación Elasticsearch por puntaje máximo de aciertos
what is elasticsearch (1)
Quiero pedir cubos por doc.score de top_hit. Mi implementación actual está abajo.
group_by_iid: {
terms: {
field: ''iid'',
order: { max_score: ''desc'' },
size: 0
},
aggs: {
max_score: { max: { script: ''doc.score'' } },
top_hit: {
top_hits: {
sort: [{ source_priority: { order: ''desc'' } }],
size: 1
}
}
}
}
Esto es incorrecto porque los depósitos se ordenan por su puntuación más alta, no su puntaje del documento fuente_prioritario superior. ¿Hay alguna manera de resolver este problema?
Tuve el mismo problema, y la forma en que lo resolví fue introducir una subagregación en la puntuación de los documentos. Luego en mi agregado externo, ordené por nombre de la agregación max_score.
GET /my-index/my-type/_search
{
"query": {
"bool" : {
"should" : [ {
"match" : {
"searchTerm" : {
"query" : "style",
"type" : "boolean"
}
}
}, {
"flt_field" : {
"searchTerm" : {
"like_text" : "style"
}
}
} ]
}
},
"aggs": {
"group_by_target_url": {
"terms": {
"field": "targetUrl",
"order": {
"max_score": "desc"
}
},
"aggs": {
"max_score": {
"max": {
"script": "doc.score"
}
}
}
}
}
}
Seguí las instrucciones en este enlace: