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
]