【问题标题】:ElasticSearch use match_phrase and multi_match togetherElasticSearch 一起使用 match_phrase 和 multi_match
【发布时间】:2019-06-19 17:08:29
【问题描述】:

我使用 ES 7.1,我想使用多重匹配进行查询以从多个字段中获取结果,但我想在特定字段上使用 match_phrase 获取结果。

我尝试了很多东西,这是最接近我想要的版本:

'bool' : {
    'must' : {
        'multi_match' : {
            'fields' => ['titre', 'subtitre', 'description'],
            'query' => $query
        },
        'match_phrase' : {
            'titre' => $query
        }
    },
    'filters' : { // ... some filters }
}

我收到一个错误:

parsing_exception","re​​ason":"[multi_match] 格式错误的查询,预期 [END_OBJECT] 但找到了 [FIELD_NAME]

有没有办法结合这两个标准?我不想创建 2 个查询。

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    当您需要多个must 子查询时,您只需将子查询作为数组传入即可。此修改应该可以工作(转换为 JSON):

    {
      "query": {
        "bool": {
          "must": [
            {
              "multi_match": {
                "query": "hello",
                "fields": ["name", "brand_name"]
              }
            },
            {
              "match_phrase": {
                "title": "hello"
              }
            }
          ]
        }
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-28
      • 1970-01-01
      • 1970-01-01
      • 2020-01-15
      • 2018-10-19
      • 1970-01-01
      相关资源
      最近更新 更多