基于另一个字段的 ElasticSearch 范围查询

Cal*_*ton 0 elasticsearch

所以文档总是使用任意日期作为要检查的值。

如果我有一个具有以下属性的对象:

DateTime DueDate
DateTime NotRequired
Run Code Online (Sandbox Code Playgroud)

我该如何做这样的事情:

{
    "range" : {
        "NotRequired" : {
            "gt" : "DueDate"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如此有效地给你简单的查询让我所有实体在哪里NotRequired > DueDate

Val*_*Val 5

range查询仅接受特定值。但是您可以通过使用比较两个日期的script过滤器来实现您想要的。

"bool" : {
    "filter" : {
        "script" : {
            "script" : "doc.NotRequired.date > doc.DueDate.date"
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

请注意,为了使其工作,您需要启用动态脚本