皆私はEs2.0バージョンを使用しています。私は、LogDateフィールドを日付タイプに基づいた範囲でソートしたいと思っています。Rangeフィールドで日付フィールドをソート
以下は私のマッピングです:
PUT test/_mapping/device
{
"device" : {
"_routing": {"required": true},
"properties" : {
"activityId" : {"type" : "long", "store" : true },
"userId":{"type":"long","store":true},
"calories":{"type":"float","store":true},
"description":{"type":"string","store":true},
"distance":{"type":"float","store":true},
"duration":{"type":"long","store":true},
"startTime":{"type": "date","format" : "yyyy-MM-dd HH:mm:ss"},
"endTime":{"type": "date","format" : "yyyy-MM-dd HH:mm:ss"},
"steps":{"type":"long","store":true},
"offset":{"type":"long","store":true},
"lightSleep":{"type":"long","store":true},
"deepSleep":{"type":"long","store":true},
"almostAwake":{"type":"long","store":true},
"s1":{"type":"long","store":true},
"s2":{"type":"long","store":true},
"s3":{"type":"long","store":true},
"s4":{"type":"long","store":true},
"s5":{"type":"long","store":true},
"s6":{"type":"long","store":true},
"s7":{"type":"long","store":true},
"s8":{"type":"long","store":true},
"year":{"type":"long","store":true},
"month":{"type":"long","store":true},
"activityType":{"type":"string","store":true},
"logDate":{"type": "date","format" : "yyyy-MM-dd",
"index": "not_analyzed"},
"createdTime":{"type": "date","format" : "yyyy-MM-dd HH:mm:ss"}
}
}
}
と私のクエリは、私は日付の指定した範囲にLOGDATEフィールドをソートしたいということです。
GET test/device/_search
{
"size": 500,
"sort": [
{
"logDate": {
"order": "asc"
}
}
],
"fields": [
"logDate"
],
"query": {
"bool": {
"must": [
{
"match": {
"userId": "305"
}
},{
"range": {
"logDate":
{
"from": "2016-01-25",
"to":"2016-01-31"
}
}
}
]
}
}
}
それは私に25から01 28から02へのすなわちを示す期待output.Itとして私を示していない、それはanalyzinf月ではありません。 昨夜からティに襲われてしまったのをお手伝いしてください.Tanku。
おかげで...しかし、私はまた、私はあなたのクエリを介して別の顔を持っていたとの答えを更新し、LTE&GTE –
でそれを試してみました。 ESは 'range'クエリ/フィルタのオプションとして** from **と** to **を持っていないので、' lte'と 'gte'を使うべきです。 –
フィルタリングされたクエリは非推奨ですhttps://www.elastic.co/blog/better-query-execution-coming-elasticsearch-2-0 – Rahul