1.概述

转载:Elasticsearch 多字段查询 best_fields、most_fields、cross_fields,傻傻分不清楚?

1.1 题记

Multi-match query 的目的多字段匹配,但 Multi-match query 中的 best_fields, most_fields, cross_fields 分不清楚,都什么含义?

下面我们一一举例解读。

1.1.1 best_fields

为默认值,如果不指定,默认best_fields 匹配。
含义:多个字段中,返回评分最高的。
类似:dis_max query

等价举例:(两个一起看,加深理解)

默认 best_fields 与 dis_max等价
POST blogs/_search
{"query": {"multi_match": {"type": "best_fields","query": "Quick pets","fields": ["title","body"],"tie_breaker": 0.2}}
}

与上述best_fields等价

POST blogs/_search
{"query": {"dis_max": {"queries": [{"match": {"title": "Quick pets"}},{"match": {"body": "Quick pets"}}],"tie_breaker": 0.2}}
}

1.1.2 most_fields

含义:匹配多个字段,返回的综合评分(非最高分)

类似:bool + 多字段匹配。

等价举例:(两个一起看,加深理解)

most_fields 与下面的 bool 查询等价。

GET /titles/_search
{"query": {"multi_match": {"query": "barking dogs","type": "most_fields","fields": ["title^10","title.std"]}}
}

与上面的most_fields等价

GET titles/_search
{"query": {"bool": {"should": [{"match": {"title": {"query": "barking dogs","boost": 10}}},{"match": {"title.std": "barking dogs"}}]}}
}

1.1.3 cross_fields

含义:跨字段匹配——待查询内容在多个字段中都显示。

类似:bool + dis_max 组合。

等价举例:(两个一起看,加深理解)

与下面的bool查询逻辑一致

GET test003/_validate/query?explain=true
{"query": {"multi_match": {"query": "Will Smith","type": "cross_fields","fields": ["first_name","last_name"],"operator": "and"}}
}GET test003/_validate/query?explain=true

返回:

"explanation" : "+blended(terms:[first_name:will, last_name:will]) +blended(terms:[first_name:smith, last_name:smith])"

与上面的cross_fields 基本等价,评分不一致,待深究

POST test003/_validate/query?explain=true
{"query": {"bool": {"must": [{"dis_max": {"queries": [{"match": {"first_name": "Will"}},{"match": {"last_name": "Will"}}]}},{"dis_max": {"queries": [{"match": {"first_name": "Smith"}},{"match": {"last_name": "Smith"}}]}}]}}
}

扩展阅读:elasticsearch应用场景之cross_fields

2.小结

类似辨识度不好区分的 Elastic 知识点,考虑通过实战例子加以区分,实战一把,有助于提升选型效率。

N.参考:

1、https://zhuanlan.zhihu.com/p/24832190

2、https://github.com/mingyitianxia/deep_elasticsearch

【Elasticsearch】 Elasticsearch 多字段查询 best_fields、most_fields、cross_fields,傻傻分不清楚?相关推荐

  1. elasticsearch best_fields most_fields cross_fields从内在实现看区别——本质就是前两者是以field为中心,后者是词条为中心...

    1.最佳字段(Best fields):: 假设我们有一个让用户搜索博客文章的网站(允许多字段搜索,最佳字段查询),就像这两份文档一样: PUT /my_index/my_type/1 {" ...

  2. elasticsearch控制返回字段查询三(英文分词)match查询

    #_source指定查询返回的字段信息  #_source指定查询返回的字段信息 GET /lib3/user/_search {"from":0, "size" ...

  3. kibana操作elasticsearch:多字段查询(multi_match)

  4. Elastic认证特训营 难点解读01——best_fields, most_fields, cross_fields 拆解认知

    1.Multi-match query 的目的 多字段匹配 2.best_fields 为默认值,如果不指定,默认best_fields匹配. 含义:多个字段中,返回评分最高的. 类似:dis_max ...

  5. java操作es聚合操作并显示其他字段_java使用elasticsearch分组进行聚合查询过程解析...

    这篇文章主要介绍了java使用elasticsearch分组进行聚合查询过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 java连接elas ...

  6. elasticsearch根据某个字段来查询,以及通过时间筛选

    elasticsearch根据某个字段来查询,以及通过时间筛选 String startTime = "2021-06-01"; String endTime = "20 ...

  7. elasticsearch 搭配 canal 字段更新和后续兼容查询设计(四)

    前言 之前的几篇elasticsearch和canal的搭配文章,基本把一个项目算是搭起来了.这个架构总算是支撑到项目的第一版上线了.在投入生产环境之后,必然会面对一系列的bug修复.需求变动.版本迭 ...

  8. Elasticsearch 查询之 多字符串多字段查询

    多字符串多字段查询 在ES中,Query Context 和Filter Context 是两种不同的上下文,其主要区别在于 Query Context 会进行相关性算分 Filter Context ...

  9. 初识ElasticSearch(2) -文档查询之match查询 | 分词器

    1. 分词器: 2. match查询: 2.1. 数据准备 - 创建带分词器的索引映射 2.2. 数据准备 - 添加文档 2.3. 数据准备 - 查看文本分词 2.4. 查询 - 映射有分词器的字段查 ...

最新文章

  1. SpringBoot简单使用
  2. python内置排序算法_2021-01-05 排序算法(Python语言实现)
  3. 多径传播matlab仿真·信号分析处理
  4. 网络仿真中数据生成相关
  5. Graham Scan凸包算法
  6. WebDriver API
  7. [转]网络编程学习指南
  8. 爱卡创誓记java饰品,《创誓记AIKA》芙兰精灵配上框架眼睛折服宅男宅女
  9. 多种负载均衡算法及其Java代码实现
  10. java 104规约_电网104规约解包(java)
  11. linux下如何查看网卡ip,linux下如何查看某个网卡当前使用的IP
  12. 火焰识别python_OpenCV_火焰检测——完整代码
  13. 可调稳压电源lm317实验报告_LM317可调直流稳压电源DIY,非常实用!
  14. 不使用脚手架搭建vue项目
  15. mysql pxc gcache_MySQL高可用之PXC
  16. ad中按钮开关的符号_电工最常用电气元件实物及对应符号
  17. Android之Http通信——1.初识Http协议
  18. python学习(总)
  19. 时间复杂度 O(1),O(n),O(n^2),O(logn),O(nlogn) 详解
  20. Linux---Linux是什么

热门文章

  1. 蔚来用户累计行驶里程超30亿
  2. 小米12系列或首发骁龙898旗舰芯:三星4nm工艺
  3. 1.5万人!京东面向2021届高校毕业生开启最大规模校招
  4. 微信搜一搜又推出了新功能!搜“医保码”直达医保页面
  5. 从教科书式的失败到手术刀式的自救,李宁找回了“李宁”!
  6. 18岁男子吸电子烟一年肺如70岁老人,怒诉电子烟公司
  7. 有钱就是任性!阿里20亿美元拿下网易考拉:欢迎加入阿里动物园
  8. 海信新机F30S即将发布:搭载紫光展锐虎贲T310处理器
  9. 情人节消费报告出炉!这三个城市最爱送花...
  10. 最前线 | 斗鱼一季度月活用户超虎牙,但上市时间仍不明确