Elasticsearch minBy
Есть ли способ в asticsearch получить поле из документа, содержащего максимальное значение? (В основном работает аналогично maxBy из scala)
Например (издевались):
{
"aggregations": {
"grouped": {
"terms": {
"field": "grouping",
"order": {
"docWithMin": "asc"
}
},
"aggregations": {
"withMax": {
"max": {
"maxByField": "a",
"field": "b"
}
}
}
}
}
}
Для которого {"grouping":1,"a":2,"b":5},{"grouping":1,"a":1,"b":10}
вернется (что-то вроде): {"grouped":1,"withMax":5}
где максимум происходит от первого объекта из-за "a"
быть там выше.
1 ответ
Предполагая, что вы просто хотите вернуть документ с максимальным значением a, вы можете сделать это:
{
"size": 0,
"aggs": {
"grouped": {
"terms": {
"field": "grouping"
},
"aggs": {
"maxByA": {
"top_hits": {
"sort": [
{"a": {"order": "desc"}}
],
"size": 1
}
}
}
}
}
}