2017-10-12 255 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'中,你確定在你的範圍查詢中'starts_on'不應該是'arrivals.starting_on'(對於'ending_on'也是一樣的)? – Val

+0

當我正在做arrivals.starting_on或arrivals.ending_on – user2873744

回答

0

range查詢是錯誤的,你不能在這兩個領域,你需要有兩個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