【问题标题】:Query string query - two fields must match查询字符串查询 - 两个字段必须匹配
【发布时间】:2017-10-02 19:02:23
【问题描述】:

我正在使用 ElasticSearch 5.1,我想知道是否可以构建查询字符串查询,该查询将匹配字段 field_1field_2 相同的所有记录。

在执行查询时,我不知道它们存储了什么值。我所知道的只是映射keyword

例如数据:

{"id": 1, "field_1": "foo", "field_2": "foo"}
{"id": 2, "field_1": "foo", "field_2": "bar"}

当我执行这样的查询时,我只想获取 id 为 1 的记录,因为field_1===field_2

谢谢!

【问题讨论】:

  • 是否可以索引另一个包含信息的布尔字段(即如果字段匹配则为 true,否则为 false)?还是您有太多字段组合需要检查?
  • 我只需要检查 2 个字段,但这必须经常更新。看起来像一个解决方案。谢谢。
  • 当您更新一个或另一个字段时,您也可以更新布尔标志。否则,您将不得不求助于使用性能低得多且最佳的脚本查询。
  • 请查看this thread

标签: elasticsearch lucene


【解决方案1】:

如果您可以使用除query string 之外的其他查询,那么script query 呢?

来自https://www.elastic.co/guide/en/elasticsearch/reference/5.5/query-dsl-script-query.html

GET /_search
{
    "query": {
        "bool" : {
            "must" : {
                "script" : {
                    "script" : {
                        "inline": "doc['field_1'].value == doc['field_2'].value"
                     }
                }
            }
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-26
    • 1970-01-01
    • 1970-01-01
    • 2018-01-13
    • 2018-12-30
    • 1970-01-01
    • 2020-08-21
    • 1970-01-01
    相关资源
    最近更新 更多