elasticsearch - Elasticsearch比较两个字段

标签 elasticsearch

例如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" ] ] ] ];

我想念什么?

最佳答案

这应该对我有用

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

要仅选择几个字段而不是整个源文档,请使用stored_fields "stored_fields": ["field_a","field_b"]并确保在映射中将这些字段作为store=true
{
stored_fields": ["field_a","field_b"]
    "query": {
        "bool": {
            "must": [{
                "script": {
                    "script": "doc['field_a'].value > doc['field_b']"
                }
            }]
        }
    }
}

关于elasticsearch - Elasticsearch比较两个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43064956/

相关文章:

java - Elasticsearch 中自定义分词器的正则表达式

elasticsearch - 在Elasticsearch中使用put方法插入具有自动生成的ID的子级

ubuntu - 无法从主机操作系统访问 Vagrant VM 中的 Elasticsearch 2.0

php - 如何使用ElasticSearch索引搜索单词的一部分

elasticsearch - 查找没有别名的 elasticsearch 索引

ElasticSearch 删除查询 - 使用术语和范围进行过滤

json - Elasticsearch如何将日期转换为JSON字符串表示形式?

elasticsearch - 无法使用Elastic ECK设置Ingress

elasticsearch - .net核心中如何将弹性查询聚合筛选器转换为嵌套查询

elasticsearch - 带有 elasticsearch-rest-client-7.2.0 的间歇性 SocketTimeoutException