Elasticsearch比较两个字段

7
例如MySQL查询。
SELECT fields_a, fields_b FROM table WHERE fields_a > fields_b;

我正在尝试实现elasticsearch。我已经尝试了以下步骤:

$where = [ "query" => [ "filter" => [ "script" => [ "script" => "doc[\"fields_a\"].value > doc[\"fields_b\"].value" ] ] ] ];

我错过了什么吗?


是的,我已经尝试过了,如下所示:$where = [ "query" => [ "filter" => [ "script" => [ "script" => "doc[\"fields_a\"].value > doc[\"fields_b\"].value" ] ] ] ]; - cikewang
你的错误是什么?问题出在哪里? - Thomas Rollet
这个回答解决了你的问题吗?elasticsearch字段比较 - undefined
1个回答

8

这对我应该有效。

{
    "query": {
        "bool": {
            "must": [{
                "script": {
                    "script": "doc['field_a'].value > doc['field_b'].value"
                }
            }]
        }
    }
}

要选择源文档中仅有的一些字段而不是全部字段,可以使用 stored_fields ,并确保在映射中将这些字段设置为 store=true。示例代码如下:"stored_fields": ["field_a","field_b"]
{
stored_fields": ["field_a","field_b"]
    "query": {
        "bool": {
            "must": [{
                "script": {
                    "script": "doc['field_a'].value > doc['field_b']"
                }
            }]
        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接