问题类似于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"
}
}
}
}
}
答案 0 :(得分:0)
你几乎就在那里,你需要这样做:
{
"query":{
"filtered":{
"filter":{
"script":{
"script": "doc.ActivityDate.date.getMonthOfYear() == 12 && doc.ActivityDate.date.getDayOfMonth() == 9"
}
}
}
}
}
<强>更新强>
根据我们在评论中的讨论,我唯一能想到的是因为ignore_malformed
属性是真的。某些日期可能不符合您已配置的模式,因此不是Date
个对象,而是String
个。这是唯一可以解释你所得到的错误的东西。