选择具有相同startDate和endDate的文档

时间:2015-03-18 08:41:32

标签: elasticsearch

我有一些文档,每个文档中都有startDateendDate个日期字段。我需要所有具有这两个值的文档。我无法找到任何可以帮助我做的查询。

2 个答案:

答案 0 :(得分:3)

Elasticsearch支持脚本过滤器,您可以在这种情况下使用它们。 More Info 这样的事情就是你需要的东西 -

POST /<yourIndex>/<yourType>/_search?
{
    "query": {
        "filtered": {
           "filter": {
               "script": {
                  "script": "doc['startDate'].value == doc['endDate'].value"
               }
           }
        }
    }
}

答案 1 :(得分:1)

这可以通过两种方式实现

  1. 索引解决方案 - 索引时添加一个名为isDateSame的附加字段,并根据startDate和endDate的值将其设置为true或false。然后,您可以轻松地根据该字段进行查询。这是最佳的优化解决方案
  2. 脚本解决方案 - Elasticsdearch维护字段数据中的所有索引数据,更像是反向反向索引。使用脚本,您可以访问任何索引字段并进行比较。这非常快,但不如第一个好。您可以使用以下查询进行相同的