Elasticsearch查询检查日期范围而不是日期数组

时间:2015-07-02 09:34:22

标签: arrays date search elasticsearch lucene

我有一个预订'存储项目已保留的日期数组的字段。

示例数据:

{
   reservations: [ "05/03/2015",
                   "05/04/2015",
                   "05/05/2015",
                   "05/18/2015",
                   "05/19/2015"
                  ]
}

我想在弹性搜索中搜索日期范围,并返回所有不包含这些日期的日期的项目。

所以我有一个startDateendDate参数来搜索。但是,elasticsearch的日期范围过滤器不符合此要求。我可以用其他方式做到这一点吗?

修改

我认为日期范围过滤器不起作用,因为您只能将startDateendDategtelt比较为右侧的一个值。我基本上在左边(开始/结束日期范围)有一堆日期需要检查,右边有多个日期(多个预订日期)。

1 个答案:

答案 0 :(得分:0)

使用嵌套对象可以解决此问题。将保留作为嵌套对象转换为主文档,而范围查询将起作用。

实施例

{
  reservation : [
    {"thedate" : "2015-01-01"}, 
    {"thedate" : "2015-03-12"},
    ...
  ]
}