在ElasticSearch中查找日期差异

时间:2016-01-28 04:51:52

标签: search elasticsearch

假设我有以下字段的文档: {field1, field2, startdate, enddate}

我需要运行一些查询,其中某些条件需要startdateenddate之间的差异

在标准SQL中,一个例子可能是:

SELECT *,(2010-01-01-startdate) as diffstartdate, (2010-01-01-enddate) as diffenddate FROM Table1

我如何在elasticsearch中实现这一目标?

1 个答案:

答案 0 :(得分:1)

Script Fields就是您所需要的。

 {
 "query" : {
   "match_all": {}
 },
 "script_fields" : {
     "difference_between_two_dates" : {
        "script" : "groovy.time.TimeCategory.minus(new   java.util.Date(2010-01-01),new java.util.Date(doc['dateCreated'].value))"

     }
  }
}

确保在elasticsearch.yml

中启用了动态脚本
script.disable_dynamic: false

您可以参考https://www.elastic.co/guide/en/elasticsearch/reference/1.4/search-request-script-fields.html了解更多信息。 希望它有所帮助。