问题类似于Elasticsearch filtering by part of date
我有一个具有一个字段映射的文档,例如:
"ActivityDate": {
"type": "date",
"ignore_malformed": true,
"format": "yyyy-MM-dd HH:mm:ss.SSS"
}
我试图获取所有12月9日发生的ActivityDate,无论年份如何。
我正在尝试各种方式的脚本过滤器,例如:
{
"query":{
"filtered":{
"filter":{
"script":{
"script":" doc['ActivityDate'].value.getMonth() == 12" ,
"lang":"expression"
}
}
}
}
}
最佳答案
您快要准备好了,您需要这样做:
{
"query":{
"filtered":{
"filter":{
"script":{
"script": "doc.ActivityDate.date.getMonthOfYear() == 12 && doc.ActivityDate.date.getDayOfMonth() == 9"
}
}
}
}
}
更新
根据我们在注释中的讨论,我唯一能想到的是因为
ignore_malformed
属性为true。有些日期可能不符合您配置的模式,因此不是Date
对象,而是String
对象。那是唯一可以解释您得到的错误的东西。关于elasticsearch - 像SQL DATEPART函数一样,Elasticsearch过滤日期的一部分,忽略年份,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34206629/