elasticsearch优化之多字段搜索multi_match查询
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查询相关推荐
- Elasticsearch多字段搜索 - multi_match查询和多数字段-----multi_match查询
multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. best_fields,most_fields以及cross_fields. 默认情况下,该查询以best_fields类 ...
- multi_match 查询
文章目录 fields 和每个字段的增强 multi_match 查询的类型 best_fields most_fields phrase 和 phrase_prefix cross_fields c ...
- [Elasticsearch2.x] 多字段搜索 (三) - multi_match查询和多数字段 译
multi_match查询 multi_match查询提供了一个简便的方法用来对多个字段执行相同的查询. NOTE 存在几种类型的multi_match查询,其中的3种正好和在"了解你的数据 ...
- Elasticsearch(三)——Es搜索(简单使用、全文查询、复合查询)、地理位置查询、特殊查询、聚合操作、桶聚合、管道聚合
Elasticsearch(三)--Es搜索(简单使用.全文查询.复合查询).地理位置查询.特殊查询.聚合操作.桶聚合.管道聚合 一.Es搜索 这里的 Es 数据博主自己上网找的,为了练习 Es 搜索 ...
- Elastic search常用分词 和 多字段搜索优化
分词器 ES的分词器把文本解析为一个一个的词,写入倒排索引中 filter过滤器 lemmagen 词性还原 stop 停顿词 shingle 临近词n个作为一组查询 analyzer分词器 stan ...
- Elasticsearch优化——搜索速度优化
Elasticsearch优化--搜索速度优化 文章目录 Elasticsearch优化--搜索速度优化 1. 为文件系统cache预留足够的内存 2. 使用更快的硬件 3. 文档模型 4. 预索引数 ...
- django+haystack+elasticsearch优化查询效率
django+haystack+elasticsearch优化查询效率 背景 安装环境 配置 1.在settings中的配置 2.在子应用下创建索引文件 3.指定索引模板文件 4.使用命令创建索引 索 ...
- Elasticsearch 字段可以模糊查询也可完全匹配查询(实例)
需求: 比如创建用户, 需要判断name是否重复后, 没有重复才插入数据, 创建好之后又需要模糊查询用户昵称name. 这时候name字段类型就需要具备分词并且可完全匹配搜索. 直接上代码: 创建映 ...
- Elasticsearch实现商品搜索(关键字查询 条件筛选 规格过滤 价格区间搜索 分页查询 排序查询 高亮查询)
Elasticsearch实现商品搜索 商品搜索 1.根据关键字查询 2.条件筛选 2.1 品牌筛选 2.1.1 需求分析 2.1.2 代码实现 2.2 规格过滤 2.2.1 需求分析 2.2.2 代 ...
最新文章
- Fedora 30将获得Bash 5.0,淘汰Yum推迟到Fedora 31
- Tensorflow Day16 Autoencoder 實作
- css border 虚线间距_【前端冷知识】CSS如何实现虚线框动画
- 一些来自STL的好东西
- 增值业务综合运营平台(VGOP)
- 开源大数据:Alluxio 云原生数据编排
- Java读取配置文件Java加载不同环境的配置文件
- knockoutjs 读源码
- 基于vue的手机阅读小说类webapp
- 自然语言处理基于java实现(1) 之 中文分词
- # Vue 配置前端后端路由地址
- 网络安全面试、实习、校招经验打包分享
- Oracle+Sql Server相关查询语句
- 联手友盟+打造数据融合“样板间”, 好兔视频成功逆势突围
- 搬:90 个名企笔试题和算法题
- 【深度学习概述学习小结】
- 学pyqt5之前需要学python吗_【第一节】PyQt5简介
- r5处理器_AMD和Intel之争,用数据告诉你:i5和R5两款千元处理器该怎么选
- 大学计算机操作题模拟,《大学计算机基础》上模拟试卷操作题
- Unity 常用射线检测方法
热门文章
- 如何校验 email 地址以提高邮件送达率
- 介绍一款Excel数据收集软件,简单好用
- 如何写综述论文全攻略
- 猿创征文|小程序账号申请和安装开发者工具
- ERP是什么?ERP管理系统怎么用?
- 大面积卫片,无人机正射影像DOM修饰及无缝拼接快捷工具——PS
- 计算机软件安装注意事项
- pytorch简单实现yolo v1
- Centos7 进入紧急模式Emergency Mode处理办法
- my97显示服务器时间,封装Web Uploader 上传插件、My97DatePicker、百度 编辑器 的使用 (ASP.NET MVC)...