公司网站制作公司排名,教育培训报名,Wordpress怎么做筛选功能,个人博客模板网站文章目录 查询操作流程概述构建并发起请求1. 创建请求对象2. 设置请求体3. 发送请求 查询结果的解析1. 解析结果结构2. 获取总条数3. 获取命中的数据 完整示例代码总结 查询操作流程概述
Elasticsearch 查询操作大致可以分为两个部分#xff1a;
构建并发起请求#xff1a;… 文章目录 查询操作流程概述构建并发起请求1. 创建请求对象2. 设置请求体3. 发送请求 查询结果的解析1. 解析结果结构2. 获取总条数3. 获取命中的数据 完整示例代码总结 查询操作流程概述
Elasticsearch 查询操作大致可以分为两个部分
构建并发起请求这一步主要包括构建请求对象和设置查询参数。解析查询结果获取到查询结果后如何从中提取出我们关心的数据。 构建并发起请求
在 Java 中查询操作的核心步骤是构建请求对象并配置相关的查询参数然后通过发送请求来获取结果。
1. 创建请求对象
在使用 Java Rest Client 查询 Elasticsearch 时首先需要创建一个 SearchRequest 对象。该对象对应着我们发送请求时的路径和查询条件。
SearchRequest 对象用于表示搜索请求。在创建该对象时我们需要指定索引库名因为查询请求是基于特定索引库进行的。
// 1.创建request对象
SearchRequest request new SearchRequest(items);2. 设置请求体
接下来我们需要构建请求体即指定查询条件。请求体通常是一个 JSON 格式的数据在 Java 中通过 request.source() 来构建。
request.source() 代表整个请求体包含查询条件query、分页条件from/size、排序条件sort、高亮显示highlight等。 通过 query 设置查询条件比如 query(QueryBuiliders.matchAllQuery()) 方法。 例如通过 QueryBuilders.matchAllQuery() 来构建一个 match all 查询。
// 2.配置request参数
request.source().query(QueryBuilders.matchAllQuery());3. 发送请求
构建完成请求对象和请求体后我们就可以使用客户端进行请求的发送。
发送请求的方法是client.search(searchRequest, RequestOptions.DEFAULT)返回的是查询结果。
// 3.发送请求
SearchResponse response client.search(request, RequestOptions.DEFAULT);返回结果 查询结果的解析
查询结果返回的格式是一个 JSON 对象通常包含多个层次的信息。为了从中提取所需的数据我们需要逐层解析。 1. 解析结果结构
查询结果中包含的主要信息有
took查询消耗的时间hits查询结果的具体内容
我们要从返回的 SearchResponse 对象中获取 hits 部分即命中的数据。
// 4.解析结果
SearchHits searchHits response.getHits();2. 获取总条数
查询结果中的 total 字段表示总命中的文档数。通过 hits.total().value 可以获取到总条数。
// 4.1.总条数
long total searchHits.getTotalHits().value;3. 获取命中的数据
查询的结果存储在 hits 数组中每个元素都是一个命中的文档。我们通过遍历该数组来提取每一条命中的数据。
// 4.2.命中的数据SearchHit[] hits searchHits.getHits();for (SearchHit hit : hits) {// 4.2.1.获取source结果String json hit.getSourceAsString();// 4.2.2.转为ItemDocItemDoc doc JSONUtil.toBean(json, ItemDoc.class);System.out.println(doc doc);每个 SearchHit 对象都包含一个 source 字段它是该文档的原始 JSON 数据。我们可以将其转换为 Java 对象如 ItemDoc。 完整示例代码
以下是一个完整的查询操作示例展示了如何构建请求、发送请求以及解析查询结果。 Test
void testMatchAll() throws IOException {// 1.创建request对象SearchRequest request new SearchRequest(items);// 2.配置request参数request.source().query(QueryBuilders.matchAllQuery());// 3.发送请求SearchResponse response client.search(request, RequestOptions.DEFAULT);// 4.解析结果SearchHits searchHits response.getHits();// 4.1.总条数long total searchHits.getTotalHits().value;System.out.println(total total);// 4.2.命中的数据SearchHit[] hits searchHits.getHits();for (SearchHit hit : hits) {// 4.2.1.获取source结果String json hit.getSourceAsString();// 4.2.2.转为ItemDocItemDoc doc JSONUtil.toBean(json, ItemDoc.class);System.out.println(doc doc);}
}总结
通过 Java Rest Client我们可以方便地构建和发送 Elasticsearch 查询请求。查询操作的核心步骤如下
构建请求对象创建 SearchRequest并设置索引库名。构建查询条件通过 SearchSourceBuilder 配置查询条件、分页、排序等。发送请求使用 client.search 方法发送请求获取查询结果。解析查询结果从响应中提取 hits 和 total并遍历命中的文档获取原始数据。