在ElasticSearch中查找日期差异 [英] Find the date difference in ElasticSearch

查看:486
本文介绍了在ElasticSearch中查找日期差异的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



我需要运行一些查询,其中一些条件将需要 startdate enddate



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



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



如何实现这在弹性搜索?

解决方案

脚本字段是你需要的。 / p>

  {
查询:{
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))

}
}
}

确保dy在 elasticsearch.yml 中启用了namic脚本。

  script.disable_dynamic: false 

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


Let's say I have documents with the following fields: {field1, field2, startdate, enddate}

I need to run some queries where some of the conditions will require the difference between the startdate and the enddate

In standard SQL, an example could be:

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

How can I achieve this in elasticsearch?

解决方案

Script Fields is what you need.

 {
 "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))"

     }
  }
}

Make sure that dynamic script is enabled in elasticsearch.yml.

script.disable_dynamic: false

You can refer to https://www.elastic.co/guide/en/elasticsearch/reference/1.4/search-request-script-fields.html for more information. Hope it helps.

这篇关于在ElasticSearch中查找日期差异的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆