Elastic Search中的多个“匹配短语”查询

发布于 2021-02-01 11:51:08

这对我来说应该是显而易见的,但事实并非如此。以下两个仅匹配第二个阶段(在这种情况下为Cape Basin

"query": {
  "match_phrase": {
    "contents": {
      "query": "St Peter Fm",
      "query": "Cape Basin"
    }
  }
}

"query": {
  "match_phrase": {
    "contents": {
      "query": ["St Peter Fm", "Cape Basin"]
    }
  }
}

而以下错误发出错误消息

"query": {
  "match_phrase": {
    "contents": {
      "query": "St Peter Fm"
    },
    "contents": {
      "query": "Cape Basin"
    }
  }
}

我想匹配包含的所有文件 或者 输入完全相同的词组。

关注者
0
被浏览
143
1 个回答
  • 面试哥
    面试哥 2021-02-01
    为面试而生,有面试问题,就找面试哥。

    您的第一个查询实际上不是有效的JSON对象,因为您两次使用相同的字段名称。

    您可以使用布尔必须查询来匹配两个短语:

    PUT phrase/doc/1
    {
      "text": "St Peter Fm some other text Cape Basin"
    }
    GET phrase/_search
    {
      "query": {
        "bool": {
          "must": [
             {"match_phrase": {"text":  "St Peter Fm"}},
             {"match_phrase": {"text":  "Cape Basin"}}
          ]
        }
     }
    }
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看