における最大値によってソートのは、私は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 things.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
]