2016-04-29 18 views
1

私はElasticSearchを使用していますが、私のクエリは必要な情報を求めていません。ElasticSearchは日付のutilsの範囲を処理しません

{ 
    "query": 
    { 
     "bool": 
     { 
      "must": 
      [ 
       { 
        "range": 
        { 
         "date": 
         { 
          "gte": "2016-04-29 00:00:01", 
          "lte": "2016-04-29 23:59:59" 
         } 
        } 
       } 
      ] 
     } 
    } 
} 

結果はすべて可能なので、クエリが存在しない場合と同じです。

POST /Test/date 
{ 
    "date": "2016-04-28 13:43:14" 
} 

I様々な私は実行の日、私はまた、実行

POST /Test/date 
{ 
    "date": "2016-04-29 13:43:14" 
} 

POST /Test/date 
{ 
    "date": "2016-04-30 13:43:14" 
} 

誰かが私を助けることができますか?

+1

どのようにクエリを送信しますか? GETまたはPOSTとどのクライアントを使用していますか? – Val

+0

POSTを使用しています – Jonathan

+0

一致するが一致しないドキュメントを表示できますか? – Val

答えて

0

あなたがから変更することができますこれはうまくいくはずです。カスタムの日付書式が必要ですが、それ以外の場合は、dateではなく、stringフィールドが作成されます。

DELETE test 

PUT /test 
{ 
    "mappings": { 
    "date": { 
     "properties": { 
     "date": { 
      "type": "date", 
      "format": "yyyy-mm-dd HH:mm:ss" 
     } 
     } 
    } 
    } 
} 

POST /test/date 
{ 
    "date": "2016-04-28 13:43:14" 
} 
POST /test/date 
{ 
    "date": "2016-04-29 13:43:14" 
} 
POST /test/date 
{ 
    "date": "2016-04-30 13:43:14" 
} 

GET /test/date/_search 
{ 
    "query": { 
    "bool": { 
     "must": [ 
     { 
      "range": { 
      "date": { 
       "gte": "2016-04-29 00:00:01", 
       "lte": "2016-04-29 23:59:59" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

フィールドが 'date'型の場合、どうでしょうか? – Jonathan

+0

そのインデックスのマッピングを提供してください: 'GET/test/date/_mapping'。 –

0

あなたのタイムスタンプ形式が間違っているため、これが原因ではないかと思います。

  • 2016年4月29日午前0時00分01秒

へ:

  • 2016-04-29T00:00:01
関連する問題