【问题标题】:Elasticsearch OR operation between phrases短语之间的 Elasticsearch OR 操作
【发布时间】:2025-11-23 20:10:01
【问题描述】:

在弹性搜索中是否可以在单个查询中获取包含短语 1 或短语 2 的所有文档? 我知道要匹配一个短语,可以使用以下查询:

"query" : {
        "match_phrase" : {
            "title" : "rock climbing"
        }
    }

但是当有多个短语并且目标是检索包含这些短语中的任何一个的文档时,情况如何。

【问题讨论】:

    标签: search lucene elasticsearch


    【解决方案1】:

    您可以将两个match_phrase 查询包装在bool queryshould 子句中:

    {
      "query" : {
        "bool": {
          "should": [
            {
              "match_phrase" : {
                "title" : "phrase1"
              }
            },
            {
              "match_phrase": {
                "title": "phrase2"
              }
            }
          ],
          "minimum_number_should_match": 1
        } 
      }
    }
    

    【讨论】:

      【解决方案2】:

      您可以执行Query String搜索

      {
          "query_string" : {
              "default_field" : "content",
              "query" : "this AND that OR thus"
          }
      }
      

      您可以在查询中指定 AND / OR 子句或使用default_operator 并将关键字写入query 参数。如果您想要精确的 phare,只需将单词括在引号中即可。

      【讨论】: