一尘不染

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

elasticsearch

这对我来说应该是显而易见的,但事实并非如此。以下两个仅匹配第二个阶段(在这种情况下为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"
    }
  }
}

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


阅读 658

收藏
2020-06-22

共1个答案

一尘不染

您的第一个查询实际上不是有效的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"}}
      ]
    }
 }
}
2020-06-22