Я использую ElasticSearch 2.3.3, и у меня есть следующая агрегация:
"aggregations": {
"mainBreakdown": {
"terms": {
"field": "location_i",
"size": 10,
"order": [
{
"comments>medianTime.50": "asc"
}
]
},
"aggregations": {
"comments": {
"filter": {
"term": {
"type_i": 120
}
},
"aggregations": {
"medianTime": {
"percentiles": {
"field": "time_l",
"percents": [
50.0
]
}
}
}
}
}
}
}
для лучшего понимания я добавил к именам полей постфикс, который сообщает отображение полей:
- _i = целое число
- _l = long (метка времени)
И ответ агрегации:
"aggregations": {
"mainBreakdown": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": 100,
"doc_count": 2,
"comments": {
"doc_count": 1,
"medianTime": {
"values": {
"50.0": 20113
}
}
}
},
{
"key": 121,
"doc_count": 14,
"comments": {
"doc_count": 0,
"medianTime": {
"values": {
"50.0": "NaN"
}
}
}
}
]
}
}
Моя проблема в том, что medianTime
агрегат, иногда имеет значение NaN
, потому что родительский агрегат comments
имеет 0 совпавших документов, и тогда результат с NaN
всегда будет последним как в «asc», так и в «desc» порядке.Я пытался добавить "missing": 0
внутри percentiles
агрегации, но он все еще возвращает NaN
.
Можете ли вы помочь мне отсортировать мои корзины по medianTime, чтобы и когда это "asc" упорядочивало NaN
значения будут первыми, а когда его "desc" они будут последними?