ES多种搜索方式总结
本节使用的是ES低版本,包含type。
分类
- query string search
- query DSL
- query filter
- full-text search
- phrase search
- highlight search
1、query string search
搜索全部商品:GET /ecommerce/product/_search
took
:耗费了几毫秒timed_out
:是否超时,这里是没有_shards
:数据拆成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以)hits.total
:查询结果的数量,3个documenthits.max_score
:score的含义,就是document对于一个search的相关度的匹配分数,越相关,就越匹配,分数也高hits.hits
:包含了匹配搜索的document的详细数据
{"took": 2,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 3,"max_score": 1,"hits": [{"_index": "ecommerce","_type": "product","_id": "2","_score": 1,"_source": {"name": "jiajieshi yagao","desc": "youxiao fangzhu","price": 25,"producer": "jiajieshi producer","tags": ["fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "1","_score": 1,"_source": {"name": "gaolujie yagao","desc": "gaoxiao meibai","price": 30,"producer": "gaolujie producer","tags": ["meibai","fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "3","_score": 1,"_source": {"name": "zhonghua yagao","desc": "caoben zhiwu","price": 40,"producer": "zhonghua producer","tags": ["qingxin"]}}]}
}
query string search
的由来,因为search参数都是以http请求的query string来附带的
搜索商品名称中包含yagao的商品,而且按照售价降序排序:GET /ecommerce/product/_search?q=name:yagao&sort=price:desc
适用于临时的在命令行使用一些工具,比如curl,快速的发出请求,来检索想要的信息;但是如果查询请求很复杂,是很难去构建的。
在生产环境中,几乎很少使用query string search
2、query DSL
DSL:Domain Specified Language
(特定领域的语言)
http request body
:请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大多了。
查询所有的商品:
GET /ecommerce/product/_search
{"query": { "match_all": {} }
}
查询名称包含yagao的商品,同时按照价格降序排序:
GET /ecommerce/product/_search
{"query" : {"match" : {"name" : "yagao"}},"sort": [{ "price": "desc" }]
}
分页查询商品,总共3条商品,假设每页就显示1条商品,现在显示第2页,所以就查出来第2个商品:
GET /ecommerce/product/_search
{"query": { "match_all": {} },"from": 1,"size": 1
}
指定要查询出来商品的名称和价格就可以:
GET /ecommerce/product/_search
{"query": { "match_all": {} },"_source": ["name", "price"]
}
query DSL
更加适合生产环境的使用,可以构建复杂的查询。
3、query filter
搜索商品名称包含yagao,而且售价大于25元的商品:
GET /ecommerce/product/_search
{"query" : {"bool" : {"must" : {"match" : {"name" : "yagao" }},"filter" : {"range" : {"price" : { "gt" : 25 } }}}}
}
4、full-text search(全文检索)
GET /ecommerce/product/_search
{"query" : {"match" : {"producer" : "yagao producer"}}
}
producer这个字段,会先被拆解,建立倒排索引
special 4
yagao 4
producer 1,2,3,4
gaolujie 1
zhognhua 3
jiajieshi 2
yagao producer —> yagao和producer
{"took": 4,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 4,"max_score": 0.70293105,"hits": [{"_index": "ecommerce","_type": "product","_id": "4","_score": 0.70293105,"_source": {"name": "special yagao","desc": "special meibai","price": 50,"producer": "special yagao producer","tags": ["meibai"]}},{"_index": "ecommerce","_type": "product","_id": "1","_score": 0.25811607,"_source": {"name": "gaolujie yagao","desc": "gaoxiao meibai","price": 30,"producer": "gaolujie producer","tags": ["meibai","fangzhu"]}},{"_index": "ecommerce","_type": "product","_id": "3","_score": 0.25811607,"_source": {"name": "zhonghua yagao","desc": "caoben zhiwu","price": 40,"producer": "zhonghua producer","tags": ["qingxin"]}},{"_index": "ecommerce","_type": "product","_id": "2","_score": 0.1805489,"_source": {"name": "jiajieshi yagao","desc": "youxiao fangzhu","price": 25,"producer": "jiajieshi producer","tags": ["fangzhu"]}}]}
}
5、phrase search(短语搜索)
跟全文检索相对应,相反,全文检索会将输入的搜索串拆解开来,去倒排索引里面去一一匹配,只要能匹配上任意一个拆解后的单词,就可以作为结果返回。
phrase search
,要求输入的搜索串,必须在指定的字段文本中,完全包含一模一样的,才可以算匹配,才能作为结果返回。
GET /ecommerce/product/_search
{"query" : {"match_phrase" : {"producer" : "yagao producer"}}
}
{"took": 11,"timed_out": false,"_shards": {"total": 5,"successful": 5,"failed": 0},"hits": {"total": 1,"max_score": 0.70293105,"hits": [{"_index": "ecommerce","_type": "product","_id": "4","_score": 0.70293105,"_source": {"name": "special yagao","desc": "special meibai","price": 50,"producer": "special yagao producer","tags": ["meibai"]}}]}
}
6、highlight search(高亮搜索结果)
GET /my-index2/_search
{"query" : {"match" : {"name" : "xbg"}},"highlight": {"fields" : {"name" : {}}}
}
关键词会高亮:
{"took" : 39,"timed_out" : false,"_shards" : {"total" : 1,"successful" : 1,"skipped" : 0,"failed" : 0},"hits" : {"total" : {"value" : 2,"relation" : "eq"},"max_score" : 0.75491273,"hits" : [{"_index" : "my-index2","_type" : "_doc","_id" : "O3PbwHEBsOGGEpTGnnwg","_score" : 0.75491273,"_source" : {"name" : "xbg","age" : "23","email" : "123456"},"highlight" : {"name" : ["<em>xbg</em>"]}},{"_index" : "my-index2","_type" : "_doc","_id" : "BnPbwHEBsOGGEpTGWHyE","_score" : 0.5565415,"_source" : {"name" : "xbg ljc","age" : "31","email" : "12345699999"},"highlight" : {"name" : ["<em>xbg</em> ljc"]}}]}
}
ES多种搜索方式总结相关推荐
- 07实战之电商网站商品管理:多种搜索方式
作为准备工作,又重新恢复了之前的3个商品文档 本节主要演示多种搜索方式,关于各种搜索语法后续会详细讲解. 1.query string search 之前也用过这个命令 , 搜索全部商品: GET / ...
- #研发解决方案介绍#基于ES的搜索+筛选+排序解决方案
郑昀 基于胡耀华和王超的设计文档 最后更新于2014/12/3 关键词:ElasticSearch.Lucene.solr.搜索.facet.高可用.可伸缩.mongodb.SearchHub.商品中 ...
- 【Elasticsearch】十九种Elasticsearch字符串搜索方式
1.概述 十九种Elasticsearch字符串搜索方式 刚开始接触Elasticsearch的时候被Elasticsearch的搜索功能搞得晕头转向,每次想在Kibana里面查询某个字段的时候,查出 ...
- 【Elasticsearch】十九种Elasticsearch字符串搜索方式终极介绍 各种 查询
本文为博主九师兄(QQ:541711153 欢迎来探讨技术)原创文章,未经允许博主不允许转载. 可以加我问问题,免费解答,有问题可以先私聊我,本人每天都在线,会帮助需要的人. 但是本博主因为某些原因, ...
- powerbi输入数据_Power BI 的多种共享方式
学而时习之 学而时习之,不亦说乎?有朋自远方来,不亦乐乎?人不知而不愠,不亦君子乎? -- 孔子<论语> 据数据统计,通过温习可掌握80%的所学知识点,为此我们将已推出的课程整理为教程文章 ...
- 极兔一面:10亿级ES海量搜索狂飙10倍,该怎么办?
背景说明: ES高性能全文索引,如果不会用,或者没有用过,在面试中,会非常吃亏. 所以ES的实操和底层原理,大家要好好准备. 另外,ES调优是一个非常.非常核心的面试知识点,大家要非常重视. 在40岁 ...
- 视频营销:一款产品如何设计多种赚钱方式
每个视频,都是你的金牌业务员 这是我写的第40篇视频营销原创文章 与其搜索十年,不如花一年的时间学习,去赚9年的高薪! 大多数人只是在卖产品的本身, 其实任何一款产品都可以设计出多种不同的赚钱方式: ...
- MATLAB遗传算法GA求解TSP旅行商问题,可选PMX交叉、OX交叉及其它多种交叉方式,在算法中引入2-opt变异算子
MATLAB遗传算法GA求解TSP旅行商问题,可选PMX交叉.OX交叉及其它多种交叉方式,在算法中引入2-opt变异算子.进化逆转算子提高算法局部搜索能力,利用国际通用的TSPLIB数据集中的eil5 ...
- Elasticsearch(038):es中搜索之入门与分页搜索
ES中搜索的方式分为两种,一种是通过URL参数进行搜索:另一种是通过POST中body请求参数进行搜索. 针对第一种我们进行简单的讲解,我们关注的核心放在第二种上面. 一.简单搜索(search) 1 ...
最新文章
- Android 亲测源码分享
- jQuery 遍历函数
- 图解:SQL Server SSIS包和job的部署攻略
- Android官方开发文档Training系列课程中文版:数据存储之数据库存储
- 福建省考计算机专业,2020福建省考,这些报考专业问题你清楚吗?
- 【含内推码】字节跳动智能创作2022秋招提前批全面开启!
- c语言成绩管理系统不用结构体,不用指针链表和结构体数组怎么编学生成绩管理系统啊...
- softmax实现多分类算法推导及代码实现
- 宕昌一中2021高考成绩查询,2020届毕业生:宕昌一中“拍了拍”你 | 青春不散场 扬帆再起航...
- 【讲座预告】Processing Learner Texts: from Annotation to ...
- 在ubuntu10.10下安装Google谷歌拼音输入法
- java网吧计费系统源码_基于jsp的网吧计费管理系统-JavaEE实现网吧计费管理系统 - java项目源码...
- steam无盘服务器,网吧服务器如何安装steam平台和正版游戏?
- ie 无人操作自动关闭_为什么ie11打开未响应然后闪退_win10ie打开就未响应自动关闭的解决方法...
- 有了这家公司,谁还去餐馆吃饭
- 保护你的聊天隐私---“外挂式”加密软件设计思路
- ZBrush中的三种对称类型的完美运用
- 用jQuery--实现todolist待办事项清单
- 虚拟机登录MySQL
- 微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统(五)---合宙Air724UG 4G cat.1硬件设计开源