1 首先说下multi_match多字段匹配的三种类型,分别是best_fields(最佳字段) 、 most_fields(多数字段) 和 cross_fields(跨字段)
2 best_fields类型,multi_match默认的查询类型,可以省略不写,返回某一个字段匹配到最多关键字的文档,比如我搜索”李安生日“,下面有两个文档

GET /news/_search
{"query": {"multi_match": {     "query": "李安生日","fields": ["headline", "summary"],"type":    "best_fields",}}

doc1:
“headline”: “李安携新电影要与观众见面了”
“summary”: “特意安排在生日这天上映新电影”
doc2:
“headline” : “向李安同志学习”
“summary” : "李安同志的英雄事迹得到了弘扬”
应该返回doc1才是我们想要的结果,然而并不是,这个时候就需要兼顾到summary字段的匹配得分了,通过公式先看下:score=best_field.scoreboost+other_fieldsboost.score*tie_breaker,这样就得到了一个均衡的得分了。

GET /news/_search
{"query": {"multi_match": {"query": "李安生日","fields": ["headline", "summary"],"type": "best_fields","tie_breaker": 0.3}}
}

tie_breaker是将其它匹配的查询子句考虑进来也是可能的。通过指定tie_breaker参数将其它每个匹配的子句的分值乘以tie_breaker,以达到取得最佳匹配查询子句的_score
3 most_fields多数字段匹配成功的得分之和,字段匹配越多,得分越高,例如搜索“李安”,很显然文档doc2的匹配度高于文档doc1

GET /news/_search
{"query": {"multi_match": {"query": "李安","fields": ["headline", "summary"],"type": "most_fields"}}
}

4 cross_fields指的是一个唯一标识,跨域了多个字段,比如人的标识是名字,一个建筑的标识是地址,姓名跨域散落在多个field中,比如first_name和last_name,一个地址也可以散落在多个字段中,比如country,province,city中。

GET /area/_search
{"query": {"multi_match": {"query": "河南省郑州市","fields": ["province", "city"],"type": "cross_fields","operator": "and"}}
}

operator使用and,是要返回两者同时匹配成功的结果。

elasticsearch优化之多字段搜索multi_match查询相关推荐

  1. Elasticsearch多字段搜索 - multi_match查询和多数字段-----multi_match查询

    multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. best_fields,most_fields以及cross_fields. 默认情况下,该查询以best_fields类 ...

  2. multi_match 查询

    文章目录 fields 和每个字段的增强 multi_match 查询的类型 best_fields most_fields phrase 和 phrase_prefix cross_fields c ...

  3. [Elasticsearch2.x] 多字段搜索 (三) - multi_match查询和多数字段 译

    multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据 ...

  4. Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合

    Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...

  5. Elastic search常用分词 和 多字段搜索优化

    分词器 ES的分词器把文本解析为一个一个的词,写入倒排索引中 filter过滤器 lemmagen 词性还原 stop 停顿词 shingle 临近词n个作为一组查询 analyzer分词器 stan ...

  6. Elasticsearch优化——搜索速度优化

    Elasticsearch优化--搜索速度优化 文章目录 Elasticsearch优化--搜索速度优化 1. 为文件系统cache预留足够的内存 2. 使用更快的硬件 3. 文档模型 4. 预索引数 ...

  7. django+haystack+elasticsearch优化查询效率

    django+haystack+elasticsearch优化查询效率 背景 安装环境 配置 1.在settings中的配置 2.在子应用下创建索引文件 3.指定索引模板文件 4.使用命令创建索引 索 ...

  8. Elasticsearch 字段可以模糊查询也可完全匹配查询(实例)

    需求: 比如创建用户, 需要判断name是否重复后, 没有重复才插入数据, 创建好之后又需要模糊查询用户昵称name.  这时候name字段类型就需要具备分词并且可完全匹配搜索. 直接上代码: 创建映 ...

  9. Elasticsearch实现商品搜索(关键字查询 条件筛选 规格过滤 价格区间搜索 分页查询 排序查询 高亮查询)

    Elasticsearch实现商品搜索 商品搜索 1.根据关键字查询 2.条件筛选 2.1 品牌筛选 2.1.1 需求分析 2.1.2 代码实现 2.2 规格过滤 2.2.1 需求分析 2.2.2 代 ...

最新文章

  1. Fedora 30将获得Bash 5.0,淘汰Yum推迟到Fedora 31
  2. Tensorflow Day16 Autoencoder 實作
  3. css border 虚线间距_【前端冷知识】CSS如何实现虚线框动画
  4. 一些来自STL的好东西
  5. 增值业务综合运营平台(VGOP)
  6. 开源大数据:Alluxio 云原生数据编排
  7. Java读取配置文件Java加载不同环境的配置文件
  8. knockoutjs 读源码
  9. 基于vue的手机阅读小说类webapp
  10. 自然语言处理基于java实现(1) 之 中文分词
  11. # Vue 配置前端后端路由地址
  12. 网络安全面试、实习、校招经验打包分享
  13. Oracle+Sql Server相关查询语句
  14. 联手友盟+打造数据融合“样板间”, 好兔视频成功逆势突围
  15. 搬:90 个名企笔试题和算法题
  16. 【深度学习概述学习小结】
  17. 学pyqt5之前需要学python吗_【第一节】PyQt5简介
  18. r5处理器_AMD和Intel之争,用数据告诉你:i5和R5两款千元处理器该怎么选
  19. 大学计算机操作题模拟,《大学计算机基础》上模拟试卷操作题
  20. Unity 常用射线检测方法

热门文章

  1. 如何校验 email 地址以提高邮件送达率
  2. 介绍一款Excel数据收集软件,简单好用
  3. 如何写综述论文全攻略
  4. 猿创征文|小程序账号申请和安装开发者工具
  5. ERP是什么?ERP管理系统怎么用?
  6. 大面积卫片,无人机正射影像DOM修饰及无缝拼接快捷工具——PS
  7. 计算机软件安装注意事项
  8. pytorch简单实现yolo v1
  9. Centos7 进入紧急模式Emergency Mode处理办法
  10. my97显示服务器时间,封装Web Uploader 上传插件、My97DatePicker、百度 编辑器 的使用 (ASP.NET MVC)...