Elasticsearch 2.4 post_filter日期数学

时间:2019-05-31 07:14:15

标签: elasticsearch

在Elasticsearch 2.4查询上将post_filterdate 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服务器的日期?

在此先感谢了我连续三天将我的头撞在砖墙上!

1 个答案:

答案 0 :(得分:0)

因此,出于某些非常奇怪的原因,在后置过滤器上使用lte可以捕获周围的文档,而如果我使用lt则可以正常工作,我不知道为什么会这样为此,我只能假设应用post_filter时会进行四舍五入,但是在计算聚合时不会四舍五入!