【问题标题】:ElasticSearch Multi Match with Multiple Query Parameters具有多个查询参数的 ElasticSearch 多重匹配
【发布时间】:2019-08-02 10:47:16
【问题描述】:

我们在 Elastic Search 中有以下多重匹配查询

{
"query": {
    "bool": {
        "must": {
            "multi_match": {
                "query": "90803",
                "type": "cross_fields",
                "fields": [
                    "POSTAL_CODE^5",
                    "ADDRESS",
                    "CITY"
                ],
                "operator": "and"
            }
        }
    }
}}

我们如何传递多个查询参数。例如我们想在查询中传递多个 ID 以匹配字段 Postal Code。

【问题讨论】:

  • 您可以只执行 "query": "90803 90804" 但这是假设邮政编码字段包含多个(或者如果它们都使用相同的分析器,则为 3 个字段的组合)。也许您正在寻找带有 or 运算符的 best_fields
  • 你能解决吗?

标签: elasticsearch


【解决方案1】:

首先,POSTAL_CODE 是一个分析字段吗?如果不是这种情况,您可以使用Terms Query:

{
    "query": {
        "terms" : { 
            "POSTAL_CODE" : ["90803", "90809"]
        }
    }
}

如果您出于某种原因想要使用 Match,则没有匹配多个值的 Match Query,您必须根据您的用例使用 Bool Queryshouldmust

must 为例:

{
    "query": {
        "bool": {
            "must": [{
                "match": { "POSTAL_CODE": "90803" }
            }, {
                "match": { "POSTAL_CODE": "90809" }
            }]
        }
    }
}

【讨论】:

    猜你喜欢
    • 2013-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多