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