ElasticSearch中如何使用多种搜索方式检索数据
发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章给大家介绍ElasticSearch中如何使用多种搜索方式检索数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1、query string search查询(1)、全量
千家信息网最后更新 2025年02月23日ElasticSearch中如何使用多种搜索方式检索数据
这篇文章给大家介绍ElasticSearch中如何使用多种搜索方式检索数据,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。
1、query string search查询
(1)、全量查询
GET http://{{es-host}}/ecommerce/produce/_search
结果:
{ "took": 38, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": 1.0, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": 1.0, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": 1.0, "_source": { "name": "gaolujie yagao", "desc": "gaoxiao meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 1.0, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] } } ] }}
解释:
took 标识检索花费的时间,单位毫秒 time_out 是否超时 _shards 数据拆分成了5个分片,所以对于搜索请求,会打到所有的primary shard(或者是它的某个replica shard也可以) total 检索5个分片 successful 成功5个 hits.total 检索到数据的总记录数 hits.max_score 相似度分数 最高为1 hits.hits 数据集合 hits.hits._index 索引名称 hits.hits._type 类型 hits.hits._score 数据评分 hits.hits._source 数据项内容
(2)、根据商品名称检索,按价格倒叙排列
GET http://{{es-host}}/ecommerce/produce/_search?q=name:yagao&sort=price:desc
结果:
{ "took": 71, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": null, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": null, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] }, "sort": [ 40 ] }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": null, "_source": { "name": "gaolujie yagao", "desc": "gaoxiao meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] }, "sort": [ 30 ] }, { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": null, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] }, "sort": [ 25 ] } ] }}
2、query DSL查询
DSL:Domain Specified Language.特定领域的语言
http request body :请求体,可以用json的格式来构建查询语法,比较方便,可以构建各种复杂的语法,比query string search肯定强大多了。
(1)、全量查询
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match_all":{} }}
结果:
{ "took": 23, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": 1.0, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": 1.0, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": 1.0, "_source": { "name": "gaolujie yagao", "desc": "gaoxiao meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 1.0, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] } } ] }}
(2) 、全量查询返回指定属性值
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match_all":{} }, "_source":["name","price"]}
返回结果:
{ "took": 57, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": 1, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": 1, "_source": { "price": 25, "name": "jiajieshi yagao" } }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": 1, "_source": { "price": 30, "name": "gaolujie yagao" } }, { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 1, "_source": { "price": 40, "name": "zhonghua yagao" } } ] }}
(3)、按商品名称搜索并按价格倒叙排列
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match":{ "name":"yagao" } }, "sort":{ "price":"desc" }}
结果:
{ "took": 384, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 3, "max_score": null, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": null, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] }, "sort": [ 40 ] }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": null, "_source": { "name": "gaolujie yagao", "desc": "gaoxiao meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] }, "sort": [ 30 ] }, { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": null, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] }, "sort": [ 25 ] } ] }}
3、query filter查询
搜索商品名称包含yagao,而且售价大于30元的商品
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "bool":{ "must":{ "match":{ "name":"yagao" } }, "filter":{ "range":{ "price":{ "gt":"30" } } } } }}
返回结果:
{ "took": 88, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.25811607, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 0.25811607, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] } } ] }}
4、full-text search查询
准备数据:
PUT http://{{es-host}}/ecommerce/produce/4{ "name":"special yagao", "desc":"special meibai", "price":"50", "producer":"special yagao producer", "tags":["meibai"]}
http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match":{ "producer":"yagao producer" } }}
检索时候会把"yagao producer" 分割成"yagao" 和"producer" 只要匹配上任何一个就是符合的数据
结果
{ "took": 20, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 4, "max_score": 0.70293105, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "4", "_score": 0.70293105, "_source": { "name": "special yagao", "desc": "special meibai", "price": "50", "producer": "special yagao producer", "tags": [ "meibai" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": 0.25811607, "_source": { "name": "gaolujie yagao", "desc": "gaolujie meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 0.25811607, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": 0.1805489, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] } } ] }}
最匹配的相关度评分高,会排在最前面。
5、phrase search查询
对要搜索的词不再分词
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match_phrase":{ "producer":"yagao producer" } }}
结果:
{ "took": 33, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 1, "max_score": 0.70293105, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "4", "_score": 0.70293105, "_source": { "name": "special yagao", "desc": "special meibai", "price": "50", "producer": "special yagao producer", "tags": [ "meibai" ] } } ] }}
6、highlight search查询
GET http://{{es-host}}/ecommerce/produce/_search{ "query":{ "match":{ "name":"yagao" } }, "highlight":{ "fields":{ "name":{} } }}
结果:
{ "took": 16, "timed_out": false, "_shards": { "total": 5, "successful": 5, "skipped": 0, "failed": 0 }, "hits": { "total": 4, "max_score": 0.25811607, "hits": [ { "_index": "ecommerce", "_type": "produce", "_id": "1", "_score": 0.25811607, "_source": { "name": "gaolujie yagao", "desc": "gaolujie meibai", "price": 30, "producer": "gaolujie producer", "tags": [ "meibai", "fangzhu" ] }, "highlight": { "name": [ "gaolujie yagao" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "3", "_score": 0.25811607, "_source": { "name": "zhonghua yagao", "desc": "caoben zhiwu", "price": 40, "producer": "zhonghua producer", "tags": [ "qingxin" ] }, "highlight": { "name": [ "zhonghua yagao" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "2", "_score": 0.16358379, "_source": { "name": "jiajieshi yagao", "desc": "youxiao fangzhu", "price": 25, "producer": "jiajieshi producer", "tags": [ "fangzhu" ] }, "highlight": { "name": [ "jiajieshi yagao" ] } }, { "_index": "ecommerce", "_type": "produce", "_id": "4", "_score": 0.16358379, "_source": { "name": "special yagao", "desc": "special meibai", "price": "50", "producer": "special yagao producer", "tags": [ "meibai" ] }, "highlight": { "name": [ "special yagao" ] } } ] }}
关于ElasticSearch中如何使用多种搜索方式检索数据就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
查询
数据
结果
检索
搜索
名称
商品
内容
多种
方式
价格
更多
语法
帮助
评分
不错
复杂
强大
最高
相似
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
电信遭黑客攻击网络安全
大学法制主题教育基地软件开发
小数据库建设
文华学院数据库报告
软件开发师年龄规定
德惠正规网络技术服务参考价格
擎格互联网科技
服务器主板改装硬盘
数据库中添加限制数字长度规则
中国海洋大学数据库哪个好
深圳c语言软件开发定做
gre考生数据库有什么用
淮安营销软件开发项目
百丽公司网络安全架构师待遇
mc服务器如何做在线时长标签
民族互联网科技公司创始人张健
我的神奇宝贝手机版怎么创服务器
浙江服务器配套机柜云主机
平原租房软件开发
无锡涡是网络技术有限公司
idea的数据库代码在哪里
任正非网络技术心得
saas软件开发工程师
闵行区网络技术开发咨询优势
怎么查看阿里云数据库的密码
网络安全低级错误
北京c 软件开发
网络安全和信息化管理办公室
平谷旧服务器回收价目表
海南裕居网络技术有限公司图片