Elasticsearch - 合并多个匹配短语

Elasticsearch - Merge multiple match phrases

我有以下查询,它工作正常。但是我的要求是我可以有多个短语需要在 OR 条件中匹配,有什么办法可以缩短查询。

{
  "query": {
    "bool": {
      "should": [
        {
          "match_phrase": {
            "primaryTags": {
              "query": "Audience1",
              "boost": 2
            }
          }
        },
        {
          "match_phrase": {
            "secondaryTags": {
              "query": "Audience1",
              "boost": 3
            }
          }
        },
        {
          "match_phrase": {
            "primaryTags": {
              "query": "Audience2",
              "boost": 2
            }
          }
        },
        {
          "match_phrase": {
            "secondaryTags": {
              "query": "Audience2",
              "boost": 3
            }
          }
        }
      ],
      "minimum_should_match": "1",
      "boost": 1
    }
  }
}

我将不得不在每个新词组中添加两个主要和次要的匹配词组。 有没有办法让所有的初级和次级的短语分别在一个条件下?

您可以使用 multi_match query with type phrase。试试下面的搜索查询:

{
    "query": {
        "bool": {
            "should": [
                {
                    "multi_match": {
                        "query": "Audience1",
                        "fields": [
                            "primaryTags^2",
                            "secondaryTags^3"
                        ],
                        "type": "phrase"
                    }
                },
                {
                    "multi_match": {
                        "query": "Audience2",
                        "fields": [
                            "primaryTags^2",
                            "secondaryTags^3"
                        ],
                        "type": "phrase"
                    }
                }
            ]
        }
    }
}