欢迎光临散文网 会员登陆 & 注册

袁庭新老师ES系列16节|Elasticsearch客户端高级操作

2023-09-21 22:55 作者:袁庭新  | 我要投稿

前言

上一章节袁老师主要带领大家学习了Elasticsearch客户端基础部分的内容,Elasticsearch客户端还有很多高级相关的操作,这一章节主要带领大家来学习Elasticsearch客户端高级相关的操作。接下来就跟上袁老师的节奏继续探讨Elasticsearch的相关知识。

1.查询所有match_all

1.先准备一部分数据。通过Kibana向yx索引库中插入以下5条数据。

2.在ElasticsearchTests类中编写查询所有文档的matchAllQuery()方法。

3.运行matchAllQuery()方法,输出结果见下:

注意,上面的代码中,搜索条件是通过sourceBuilder.query(QueryBuilders.matchAllQuery())来添加的。这个query()方法接受的参数是QueryBuilder接口类型。

这个接口提供了很多实现类,分别对应我们在之前学习的不同类型的查询。例如:term查询、match查询、range查询、boolean查询等。见下图(Mac快捷键:command+option+B):

因此,我们如果要使用各种不同查询,其实仅仅是传递给sourceBuilder.query(QueryBuilder query)方法的参数不同而已。而这些实现类不需要我们去手动创建 ,官方提供了QueryBuilders工厂帮我们构建各种实现类。

2.关键字搜索match

1.在ElasticsearchTests类中定义关键字查询文档数据的matchQuery()方法。

2.运行matchQuery()方法,输出结果见下:

其实搜索类型的变化,仅仅是利用QueryBuilders构建的查询对象不同而已,其他代码基本一致。因此,我们可以把这段代码封装,然后把查询条件作为参数传递。

3.在ElasticsearchTests类中定义basicQuery()方法封装代码,然后重构matchQuery()方法。

3.范围查询range

QueryBuilders类中定义返回查询的方法。

RangeQueryBuilder提供多种范围查询API,常见用的见下:

1.在ElasticsearchTests类中定义范围查询的rangeQuery()方法。

2.运行rangeQuery()方法,输出结果见下:

4.source过滤

默认情况下,索引库中所有数据都会返回(_source属性中存储原始文档),如果我们想只返回部分字段,可以通过source filter来控制。

1.在ElasticsearchTests类中定义过滤查询的sourceFilter()方法。

2.运行sourceFilter()方法,输出结果见下:

二. 排序

排序依然是通过SearchSourceBuilder来进行配置。

1.在ElasticsearchTests类中定义过滤查询的sort()方法。

2.运行sort()方法,输出结果见下:

三. 分页

1.分页语法

分页需要视图层传递两个参数给后台。

2.分页案例

1.在ElasticsearchTests类中定义分页查询的paging()方法。

2.运行paging()方法,输出结果见下:

四. 结语

Elasticsearch客户端高级操作的内容袁老师就带领大学学习到这里,这一章节主要带领大学学习了:搜索数据,包括查询所有match_all、关键字搜索match、范围查询range和source过滤内容,同时还介绍了排序和分页等操作。好了关于Elasticsearch客户端操作的所有内容我们就学完啦。

今天的内容就分享到这里吧。关注「袁庭新」,干货天天都不断!


袁庭新老师ES系列16节|Elasticsearch客户端高级操作的评论 (共 条)

分享到微博请遵守国家法律