首页
技术小册
AIGC
面试刷题
技术文章
MAGENTO
云计算
视频课程
源码下载
PDF书籍
「涨薪秘籍」
登录
注册
ElasticSearch开篇ES的安装
ElasticSearch的基本概念与名词解析
ElasticSearch数据管理文档的基础操作
ElasticSearch全文搜索API实践
ElasticSearch之Term-Query-API实践
ElasticSearch组合查询
ElasticSearch推荐搜索选项Suggesters的API
ElasticSearch统计需求之聚合
ElasticSearch集群管理API的使用
ElasticSearch索引管理API的使用
ElasticSearch中Mapping的使用
ElasticSearch关系模型之嵌套类型和父子文档
ElasticSearch正排索引与倒排索引简介
ElasticSearch全文搜索之倒排索引的实现
ElasticSearch数据相似的依据之相关性评分
ElasticSearch词项生成器之分词器
ElasticSearch分布式之集群中常见问题与解决方案
ElasticSearch分布式文档搜索机制
ElasticSearch数据持久化之分布式文档的存储流程
ElasticSearch分页之from+size、search after、scroll api
ElasticSearch聚合分析的原理之聚合结果一定准确
ElasticSearch数据副本策略
ElasticSearch数据副本模型
ElasticSearch集群运维
ElasticSearch索引的生命周期ILM
ElasticSearch安全之集群安全
ElasticSearch异常管理之搭建ELK日志系统
当前位置:
首页>>
技术小册>>
ElasticSearch零基础到实战
小册名称:ElasticSearch零基础到实战
本文将介绍ElasticSearch的组合查询,并提供相应的代码示例。代码尽量简短,以便读者快速上手使用该API。 **组合查询概述** 组合查询是一种多个查询条件组合起来的查询类型,常用于过滤出符合多个条件的文档。ElasticSearch提供了多种组合查询类型,包括bool查询、dis_max查询、constant_score查询等。 其中,最常用的组合查询类型是bool查询,它可以将多个查询条件组合起来,使用逻辑运算符(AND/OR/NOT)进行组合。 bool查询的基本语法如下所示: ```asp { "query": { "bool": { "must": [ { "match": { "title": "ElasticSearch" } }, { "range": { "date": { "gte": "2020-01-01", "lte": "2020-12-31" } } } ], "must_not": [ { "term": { "status": "deleted" } } ], "should": [ { "match": { "content": "search" } } ] } } } ``` 其中,“must”表示必须满足的条件,“must_not”表示不能满足的条件,“should”表示可选的条件。如果所有的“must”条件和“should”条件都满足,则该文档符合查询条件,将被返回;如果有任何一个“must_not”条件满足,则该文档将被排除。 **组合查询代码示例** 下面是一个使用bool查询查询名为“my_index”的索引中,同时包含关键字“ElasticSearch”和“search”,且在2020年内创建的文档的示例代码: ```asp import requests url = "http://localhost:9200/my_index/_search" headers = { "Content-Type": "application/json" } data = """ { "query": { "bool": { "must": [ { "match": { "title": "ElasticSearch" } }, { "match": { "content": "search" } }, { "range": { "date": { "gte": "2020-01-01", "lte": "2020-12-31" } } } ] } } } """ response = requests.get(url, headers=headers, data=data) print(response.json()) ``` 上述代码向ElasticSearch实例的“/my_index/_search”路径发送了一个JSON格式的数据,该数据定义了查询的内容。在这里,我们使用bool查询查询名为“my_index”的索引中,同时包含关键字“ElasticSearch”和“search”,且在2020年内创建的文档。该查询条件是由“must”子句中的两个“match”查询和一个“range”查询组合而成的。 如果我们想查询不包含关键字“ElasticSearch”的文档,可以使用下面的代码: ```asp import requests url = "http://localhost:9200/my_index/_search" headers = { "Content-Type": "application/json" } data = """ { "query": { "bool": { "must_not": [ { "match": { "title": "ElasticSearch" } } ], "filter": [ { "range": { "date": { "gte": "2020-01-01", "lte": "2020-12-31" } } } ] } } } """ response = requests.get(url, headers=headers, data=data) print(response.json()) ``` 在上述代码中,我们将bool查询的“must_not”子句中的“match”查询改为了“must_not”查询,该查询表示必须不包含关键字“ElasticSearch”。我们还添加了一个“filter”子句,该子句表示必须满足“date”字段的范围条件。 小结: 组合查询是ElasticSearch中非常常见和有用的查询类型。通过组合多个查询条件,我们可以更加精确地过滤文档,从而得到我们需要的结果。 本文介绍了ElasticSearch中的bool查询,并提供了相应的代码示例。我们可以根据自己的需求调整查询条件,以达到最优的查询结果。
上一篇:
ElasticSearch之Term-Query-API实践
下一篇:
ElasticSearch推荐搜索选项Suggesters的API
该分类下的相关小册推荐:
ElasticSearch入门与实践