Multi Match Query

Multi Match Query

  multi_match查询建议在match query之上,并允许多字段查询:

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "this is a test",   【1】
      "fields": [ "subject", "message" ]  【2】
    }
  }
}

  【1】 查询字符串

  【2】被查询的字段

fields and per-field boosting

  字段可以通过通配符指定,例如:

GET /_search
{
  "query": {
    "multi_match" : {
      "query":    "Will Smith",
      "fields": [ "title", "*_name" ] 【1】
    }
  }
}

  【1】查询title,first_name和last_name字段。

  个别字段可以通过插入符号(^)来提升:

GET /_search
{
  "query": {
    "multi_match" : {
      "query" : "this is a test",
      "fields" : [ "subject^3", "message" ] 【1】
    }
  }
}

  【1】subject字段是message字段的3倍。

Types of multi_match query:

  内部执行multi_match查询的方式依赖于type参数,它可以被设置成:

  best_fields    (默认)查找与任何字段匹配的文档,但使用最佳字段中的_score。看best_fields.

  most_fields  查找与任何字段匹配的文档,并联合每个字段的_score.

  cross_fields  采用相同分析器处理字段,就好像他们是一个大的字段。在每个字段中查找每个单词。看cross_fields

  phrase    在每个字段上运行match_phrase查询并和每个字段的_score组合。看phrase and phrase_prefix

  phrase_prefix    在每个字段上运行match_phrase_prefix查询并和每个字段的_score组合。看phrase and phrase_prefix

best_fields

  当你在同一个字段中搜索最佳查找的多个单词时,bese_fields类型是最有效的。例如,"brown fox"单独在一个字段中比"brown"在一个字段中和"for"在另外一个字段中更有意义。

  best_fields为每一个字段生成match query并在dis_max查询中包含他们,以发现单个最匹配的字段。例如这个查询:

GET /_search
{
  "query": {
    "multi_match" : {
      "query":      "brown fox",
      "type":       "best_fields",
      "fields":     [ "subject", "message" ],
      "tie_breaker": 0.3
    }
  }
}

  也可以这样执行:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值