2017-10-12 17 views
0

弾性検索の結果を開始日と終了日の間の日付に基づいてフィルタリングしようとしています。エラスティック検索のバージョンは1.7.6です。日付範囲クエリの実行時に弾性検索で正しい結果が得られない

これは完全に間違った結果を与えています。 私はインデックスを照会するために驚きを使用しています。

スキーマが

"starting_on": { 
      "type": "date", 
      "format": "dateOptionalTime" 
      } 
My query is below:-- 

      GET XX/XX/_search 
      { 
      "_source": [ 
       "arrivals.starting_on", 
       "arrivals.ending_on" 
       ], 
       "query": { 
       "filtered": { 
      "filter": { 
       "bool": { 
      "must": [ 
      { 
       "range": { 

       "starting_on": { 
        "gte" : "2017-10-14", 
        "format": "dateOptionalTime", 


       }, 
       "ending_on": { 
        "lte" : "2017-10-17", 
        "format": "dateOptionalTime", 

       } 
       } 

      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

あなたが持っているものを考えます'_source'では、あなたの範囲クエリ' starting_on'は 'arrivals.starting_on'ではないはずです(' ending_on'と同じですか?) – Val

+0

arrivals.starting_onまたはarrivals.ending_onを実行しているときにクエリがヒットしていない – user2873744

答えて

0

あなたrangeクエリが間違っている、あなたはそれに2つのフィールドを持つことができない、あなたの代わりに2つのrangeのクエリを持っている必要があり、このような:

GET XX/XX/_search 
{ 
    "_source": [ 
    "arrivals.starting_on", 
    "arrivals.ending_on" 
    ], 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "range": { 
       "arrivals.starting_on": { 
        "gte": "2017-10-14", 
        "format": "dateOptionalTime" 
       } 
       } 
      }, 
      { 
       "range": { 
       "arrivals.ending_on": { 
        "lte": "2017-10-17", 
        "format": "dateOptionalTime" 
       } 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

これで運がいいですか? – Val

関連する問題