假设我有以下字段的文档:
{field1, field2, startdate, enddate}
我需要运行一些查询,其中某些条件需要startdate
和enddate
之间的差异
在标准SQL中,一个例子可能是:
SELECT *,(2010-01-01-startdate) as diffstartdate, (2010-01-01-enddate) as diffenddate FROM Table1
我如何在elasticsearch中实现这一目标?
答案 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了解更多信息。 希望它有所帮助。