0
比方說,我有2個文件:Elasticsearch:數組排序最大值
{
"id": "1234",
"things": [
{
"datetime": "2016-01-01T12:00:00+03:00"
},
{
"datetime": "2016-01-06T12:00:00+03:00"
},
{
"datetime": "2100-01-01T12:00:00+03:00"
}
]
}
和
{
"id": "5678",
"things": [
{
"datetime": "2016-01-03T12:00:00+03:00"
},
{
"datetime": "2100-01-06T12:00:00+03:00"
}
]
}
things.datetime被映射爲{ 「類型」: 「日期」,「格式「:」date_time_no_millis「}。
我想基於最新things.datetime值,是不是在未來,這些文檔進行排序。
I.e.通過簡單地排序max.datetime將使用日期2100-01-01T12:00:00 + 03:00和2100-01-06T12:00:00 + 03:00。我希望排序基於值2016-01-06T12:00:00 + 03:00和2016-01-03T12:00:00 + 03:00。
我怎樣才能做到這一點,利用ElasticSearch 2.X?
我已經試過:
"sort": {
"things.datetime": {
"order": "desc",
"mode": "max"
}
}
但這似乎並不甚至由2100個日期排序。
我還試圖用nested_filter像這樣:
"sort": {
"things.datetime": {
"order": "desc",
"mode": "max",
"nested_filter": {
"range": {
"things.datetime": { "lte": "now" }
}
}
}
}
但正如我希望它不工作。
此外,在響應中的「排序」的值是一個負數。因此,對於有日期的文件:
"2015-10-24T05:50:00+03:00",
"2015-10-26T22:05:48+02:00",
"2015-10-24T08:05:43+03:00"
得到一個負排序值:
"sort": [
-9223372036854775808
]