2015-10-01 1 views
0

У меня есть документы с полем, которое содержит несколько дат.Фильтровать документы с более чем одной датой в Elastic Search

"release_date" : [ 
"2015-07-10", 
"2015-07-13", 
"2015-07-26", 
"2015-07-27" 
] 

Я хотел бы фильтр все документы, по крайней мере, на сегодняшний день больше, чем в другой заданной даты.

Я был в состоянии использовать диапазон фильтра, когда документ только имел одну дату

{ 
    "constant_score": { 
     "filter": { 
      "range" : { 
       "release_date" : { 
        "gte": "2012-01-01", 
       } 
      } 
     } 
    } 
} 

Но теперь, когда у меня есть более чем одну дату, я не нашел способ достижения подобного результата. Является ли это возможным?

Спасибо!

+1

Пожалуйста, покажите, что вы сделали до сих пор, всем будет проще представить, что вы пытаетесь сделать. – Val

ответ

1

Убедитесь, что поле «Release_date» правильно отображено на объект даты. Следующий пример работает для того, что вы пытаетесь сделать:

PUT test1 

PUT /test1/_mapping/type1 
{ 
    "type1" : { 
     "properties" : { 
      "release_date" : {"type" : "date"} 
     } 
    } 
} 

POST test1/type1 
{ 
    "release_date" : [ 
    "2014-03-28", 
    "2010-03-28", 
    "2011-03-28" 
    ] 
} 

GET test1/type1/_search 
{ 
    "query": { 
"filtered": { 
     "filter": { 
     "range": { 
      "release_date": { 
      "gte": "2013-01-01" 
      } 
     } 
     } 
    } 
    } 
} 
Смежные вопросы