【问题标题】:difference between match and multimatch query type in elasticsearchelasticsearch中匹配和多匹配查询类型的区别
【发布时间】:2017-02-26 02:47:08
【问题描述】:

我是弹性搜索的新手。我对弹性搜索匹配和多匹配查询有点困惑。两种查询类型有什么区别?什么时候必须使用它们中的每一个?使用它们对性能有何影响?

提前致谢。

【问题讨论】:

  • documentation 非常清楚,multi_match 允许您跨多个字段进行查询,而 match 使用单个字段。还有什么不清楚的地方吗?
  • 我也想知道,在应用程序中使用 multi_match 而不是 match 的性能影响。

标签: elasticsearch


【解决方案1】:

您可以很容易地看到multimatchmatch 查询与the documentation 之间的差异。例如,multimatch 查询类型为most_fields

GET /_search
{
  "query": {
    "multi_match" : {
      "query":      "quick brown fox",
      "type":       "most_fields",
      "fields":     [ "title", "title.original", "title.shingles" ]
    }
  }
}

这将被执行为:

GET /_search
{
  "query": {
    "bool": {
      "should": [
        { "match": { "title":          "quick brown fox" }},
        { "match": { "title.original": "quick brown fox" }},
        { "match": { "title.shingles": "quick brown fox" }}
      ]
    }
  }
}

如您所见,multimatch 查询是从 match 查询构建的。所以,我认为,性能问题与您的查询结构有关。您可以选择另一个查询是否更有效率。

multimatch查询的另一种类型与most_fields类型的情况相同。例如Phrase typemost_fields type

【讨论】:

  • 您能否详细说明 best_field 和 cross_field 将如何为您给出的示例工作?感谢 most_field 的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-10
  • 1970-01-01
  • 1970-01-01
  • 2016-08-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多