在Elasticsearch 2.4查询上将post_filter
与date math
结合使用时,例如:
"post_filter": {
"bool": {
"must": [
[
{
"range": {
"facets.due_date": {
"gte": "now+2d\/d",
"lte": "now+3d\/d-1s"
}
}
}
]
]
}
}
结果包括日期超出范围1天的文档。在报告桶正确计数的聚合中使用了完全相同的值(在这种情况下为2个文档,在这种情况下为星期六),但是,正如我在应用上述后过滤器时提到的那样,返回了3个文档[额外的文档是在周日早上9点]。日期是任意的,我可以在几天内将其更改为相同的内容。我还在使用UTC时间,并且在测试中允许这样做,方法是在值中添加/删除几个小时以绕过时区引发的任何错误。
如果我使用一组实际的具体日期,它可以按预期工作,那么我的问题是,post_filter
是否与date math
有问题/错误,或者是否可以使用explain
向我显示post_filter
发送到ES服务器的日期?
在此先感谢了我连续三天将我的头撞在砖墙上!
答案 0 :(得分:0)
因此,出于某些非常奇怪的原因,在后置过滤器上使用lte
可以捕获周围的文档,而如果我使用lt
则可以正常工作,我不知道为什么会这样为此,我只能假设应用post_filter
时会进行四舍五入,但是在计算聚合时不会四舍五入!