2016-08-05 50 views

回答

3

通知dateField如果你只是要檢查某一年的文件,最簡單的方法是使用一個range過濾器中,你檢查該dateField是1月1日和2016年的12月31日之間:

POST index/_search 
{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "range": { 
      "dateField": { 
       "gte": "2016-01-01T00:00:00.000Z", 
       "lt": "2017-01-01T00:00:00.000Z" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 

您有其他兩種解決方案:

  1. 您創建一個您在索引時間文檔裏面場,所以你可以使用termrange查詢/過濾器
  2. 搜索就可以了你在搜索時

第一種選擇是更高性能的使用script過濾器,但如果你想嘗試第二個選項,它是這樣的:

POST index/_search 
{ 
    "query": { 
    "bool": { 
     "filter": [ 
     { 
      "script": { 
      "script": { 
       "inline": "doc.dateField.date.getYear() == year", 
       "params": { 
       "year": 2016 
       } 
      } 
      } 
     } 
     ] 
    } 
    } 
}