将比较两个字段的 Lucene 查询

Lucene query where two fields will be compared

我有一个弹性搜索集群。集群中的所有文档都具有相同的索引和类型。每个文档都有两个数字字段 -> field1 和 field2。

我想显示 Grafana 中的所有文档,其中 value of field1 > value of field2

是否有类似这样的查询:

document_type:test AND field1 > field2 ?

据我所知,无法使用 elasticsearch (lucene) 执行此类查询。它确实支持范围查询,但不支持文档中不同字段之间的比较。

您可以使用 (groovy) script query 来执行此操作,如下所示:

{
    "query" : {
        "term" : {
            "document_type" : "test"
        }
    },
    "filter" : {
        "script" : {
            "script" : "doc['field1'].value > doc['field2'].value"
        }
    }
}

另请参阅有关 Elasticsearch scripting module 中可用内容的更多文档。