admin管理员组文章数量:1604350
数据准备:
PUT /shop
{"settings": {"number_of_shards": 3,"number_of_replicas": 2}
}
PUT/shop/_mapping/goods
{"properties": {"title": {"type": "text","analyzer": "ik_max_word"},"price": {"type": "float"},"stock": {"type": "integer"}
}
}
POST/shop/goods/_bulk
{"index":{}}
{"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","price": 2299.00,"stock": 8800}
{"index":{}}
{"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","price": 4999.00,"stock": 5600}
{"index":{}}
{"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","price": 8599.00,"stock": 1900}
{"index":{}}
{"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109.00,"stock": 9970}
一、基本查询
语法:
GET /索引库名/_search
{"query": {"查询类型": {"查询条件": "查询条件值"}
}
}
查询类型:match_all,match,term,range,fuzzy,bool 等等
查询条件:查询条件会根据类型的不同,写法也有差异
1.1 查询所有(match_all)
查询指令:
GET /shop/_search
{"query": {"match_all": {}
}
}
查询结果:
{"took": 13,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": 1,"_source": {"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","price": 8599,"stock": 1900}
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109,"stock": 9970}
},
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": 1,"_source": {"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","price": 2299,"stock": 8800}
},
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": 1,"_source": {"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","price": 4999,"stock": 5600}
}
]
}
}
对查询结果进行分页
GET /shop/_search
{"query": {"match_all": {}
},"from": 1,"size": 2}
1.2 匹配查询(match)
or 关系:会把查询条件进行分词,然后进行查询,多个词条之间是or的关系
查询指令:
GET /shop/_search
{"query": {"match": {"title": {"query": "小米手机","operator": "or"}
}
}
}
查询结果:
{"took": 3,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1.6051829,"hits": [
{"_index": "demo","_type": "goods","_id": "MIHNs2gBBdkQnU_d_r6o","_score": 1.6051829,"_source": {"title": "华为手机","price": "2199.00"}
},
{"_index": "demo","_type": "goods","_id": "LYHJs2gBBdkQnU_dt75n","_score": 0.2876821,"_source": {"title": "小米手机","price": "1699.00"}
}
]
}
}
and关系:会把查询条件进行分词,然后进行查询,多个词条之间是and的关系
查询指令:
GET /shop/_search
{"query": {"match": {"title": {"query": "小米手机","operator": "and"}
}
}
}
查询结果:
{"took": 10,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.92355466,"hits": [
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": 0.92355466,"_source": {"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","price": 2299,"stock": 8800}
}
]
}
}
1.3 词条查询
单值查询(term)
查询指令:
GET /shop/_search
{"query": {"term": {"price": 109.00}
}
}
查询结果:
{"took": 3,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109,"stock": 9970}
}
]
}
}
多值查询(terms)
查询指令:
GET /shop/_search
{"query": {"terms": {"price": [8599.00,109.00]
}
}
}
查询结果:
{"took": 15,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": 1,"_source": {"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","price": 8599,"stock": 1900}
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109,"stock": 9970}
}
]
}
}
二、结果过滤
默认情况下,elasticsearch在搜索的结果中,会把文档中保存在 _source 的所有字段都返回。
如果我们只想获取其中的部分字段,我们可以添加 _source 字段进行过滤
2.1 包含字段查询(includes)
查询指令:
GET /shop/_search
{"query": {"match_all": {}
},"_source": {"includes": ["title","price"]
}
}
查询结果:
{"took": 4,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": 1,"_source": {"price": 8599,"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)"}
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"price": 109,"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器"}
},
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": 1,"_source": {"price": 2299,"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待"}
},
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": 1,"_source": {"price": 4999,"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机"}
}
]
}
}
2.2 排除字段查询(excludes)
查询指令
GET /shop/_search
{"query": {"match_all": {}
},"_source": {"excludes": "price"}
}
查询结果:
{"took": 3,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": 1,"_source": {"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","stock": 1900}
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","stock": 9970}
},
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": 1,"_source": {"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","stock": 8800}
},
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": 1,"_source": {"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","stock": 5600}
}
]
}
}
三、高级查询
3.1 范围查询(range)
查询找出那些落在指定区间内的数字或者时间
查询指令:
GET /shop/_search
{"query": {"range": {"price": {"gte": 2000,"lte": 5000}
}
}
}
查询结果:
{"took": 3,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1,"hits": [
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": 1,"_source": {"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","price": 2299,"stock": 8800}
},
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": 1,"_source": {"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","price": 4999,"stock": 5600}
}
]
}
}
range查询允许以下操作符
3.2 布尔查询(bool)
bool把各种其它查询通过must(与)、must_not(非)、should(或)的方式进行组合
查询指令:
GET /shop/_search
{"query": {"bool": {"should": [
{"match": {"title": "笔记本"}
},
{"term": {"price": 109.00}
}
]
}
}
}
查询结果:
{"took": 15,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 2,"max_score": 1.9646256,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": 1.9646256,"_source": {"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","price": 8599,"stock": 1900}
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": 1,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109,"stock": 9970}
}
]
}
}
四、过滤查询
所有的查询都会影响到文档的评分及排名。如果我们需要在查询结果中进行过滤,并且不希望过滤条件影响评分,
那么就不要把过滤条件作为查询条件来用,而是使用filter方式。
查询指令:
GET /shop/_search
{"query": {"bool": {"must": [
{"match": {"title": "手机"}
}
],"filter": {"range": {"price": {"gt": 3000}
}
}
}
}
}
查询结果:
{"took": 5,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 1,"max_score": 0.17329858,"hits": [
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": 0.17329858,"_source": {"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","price": 4999,"stock": 5600}
}
]
}
}
注意:filter中还可以再次进行bool组合条件过滤。
五、排序查询
sort 可以让我们按照不同的字段进行排序,并且通过order指定排序的方式。
查询指令:
GET /shop/_search
{"query": {"match_all": {}
},"sort": [
{"price": {"order": "desc"}
}
]
}
查询结果:
{"took": 55,"timed_out": false,"_shards": {"total": 3,"successful": 3,"skipped": 0,"failed": 0},"hits": {"total": 4,"max_score": null,"hits": [
{"_index": "shop","_type": "goods","_id": "P4EGtmgBBdkQnU_d8b7I","_score": null,"_source": {"title": "联想(Lenovo)拯救者Y7000P英特尔酷睿 i7 15.6英寸游戏笔记本电脑(i7-8750H 8G 512G SSD GTX1060 144Hz黑)","price": 8599,"stock": 1900},"sort": [8599]
},
{"_index": "shop","_type": "goods","_id": "PoEGtmgBBdkQnU_d6b4Q","_score": null,"_source": {"title": "OPPO Find X曲面全景屏 波尔多红 8GB+128GB 全网通 移动联通电信全网通4G 双卡双待手机","price": 4999,"stock": 5600},"sort": [4999]
},
{"_index": "shop","_type": "goods","_id": "PYEGtmgBBdkQnU_d4b4m","_score": null,"_source": {"title": "小米8 全面屏游戏智能手机 6GB+64GB 黑色 全网通4G 双卡双待","price": 2299,"stock": 8800},"sort": [2299]
},
{"_index": "shop","_type": "goods","_id": "QIEGtmgBBdkQnU_d-r6T","_score": null,"_source": {"title": "TP-LINK TL-WDR5620 1200M 5G双频智能无线路由器 四天线智能wifi 稳定穿墙高速家用路由器","price": 109,"stock": 9970},"sort": [109]
}
]
}
}
本文标签: 数据查询数据esElasticsearch
版权声明:本文标题:es筛选数据_Elasticsearch 数据查询 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dianzi/1728452436a1158592.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论