当前位置: 首页 > news >正文

使用 Elasticsearch RestHighLevelClient 进行查询

Elasticsearch 提供了多种客户端库,以方便不同编程语言的用户进行操作。其中,Java 的 RestHighLevelClient 是 Elasticsearch 官方推荐的客户端之一,用于 Java 应用程序中。本文将介绍如何使用 Java 的 RestHighLevelClient 进行 Elasticsearch 查询,并与 DSL (Domain Specific Language) 查询进行对比。

RestHighLevelClient 简介

RestHighLevelClient 是 Elasticsearch 的 Java 高级 REST 客户端,它提供了简单的 API 来构建查询请求,并执行搜索、索引、更新和其他操作。

环境准备

在开始之前,确保你的项目中已经添加了 Elasticsearch 客户端库的依赖。如果使用 Maven,可以在 pom.xml 文件中添加如下依赖:

<dependency><groupId>org.elasticsearch.client</groupId><artifactId>elasticsearch-rest-high-level</artifactId><version>7.10.0</version> <!-- 使用适合的版本号 -->
</dependency>

查询示例

基本步骤

  1. 创建 RestHighLevelClient 实例。
  2. 创建 SearchRequest 对象并准备查询 DSL。
  3. 使用 RestHighLevelClient 发送请求并获取 SearchResponse
  4. 解析 SearchResponse 结果。

示例代码

import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.Response;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.builder.SearchRequest;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.SearchHits;import java.io.IOException;public class ElasticsearchQueryExample {public static void main(String[] args) throws IOException {// 1. 创建 RestHighLevelClient 实例RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http")));// 2. 准备 SearchRequestSearchRequest searchRequest = new SearchRequest("hotel");searchRequest.source().query(QueryBuilders.matchAllQuery());// 3. 发送请求,获取响应结果SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);// 4. 解析响应结果for (SearchHit hit : response.getHits().getHits()) {String sourceAsString = hit.getSourceAsString();System.out.println(sourceAsString);}// 关闭客户端连接client.close();}
}

DSL 查询对比

在这里插入图片描述

在 Elasticsearch 中,DSL 查询通常以 JSON 格式编写,如下所示:

GET /indexName/_search
{"query": {"match_all": {}}
}

使用 RestHighLevelClient 时,我们通过 Java API 构建相同的查询:

searchSourceBuilder.query(QueryBuilders.matchAllQuery());

结语

使用 RestHighLevelClient 进行 Elasticsearch 查询提供了一种类型安全和面向对象的方法。它允许我们利用 Java 的编码优势,同时避免了手动编写和解析 JSON 的麻烦。通过上述示例,我们可以看到使用 Java API 与编写 DSL 查询在逻辑上是一致的,但表现形式不同。选择哪种方法取决于你的应用程序需求和个人偏好。希望本文能帮助你更好地理解如何使用 Java 高级 REST 客户端与 Elasticsearch 进行交互。

http://www.lryc.cn/news/426049.html

相关文章:

  • 【jvm】符号引用
  • 征服云端:Java微服务与Docker容器化之旅
  • python 如何实现执行selenium自动化测试用例自动录屏?
  • 03 网络编程 TCP传输控制协议
  • 1. 数据结构——顺序表的主要操作
  • [openSSL]TLS 1.3握手分析
  • 无人机之螺旋桨的安装与维护
  • 手机设备IP地址切换:方法、应用与注意事项
  • 华为HCIP证书好考吗?详解HCIP证书考试难易程度及备考策略!
  • 《SPSS零基础入门教程》学习笔记——05.模型入门
  • 如何用不到一分钟的时间将Excel电子表格转换为应用程序
  • WordPress 中 cURL 请求出现 504 网关超时错误的解决方法
  • 事件和委托的区别
  • 低功耗蓝牙协议栈如何学习?
  • ROS 2中,CMakeList.txt常见语法
  • 使用 prefetchComponents 进行组件预取
  • 『 C++ 』IO流
  • enhanced Input Action IA_Look中Action value引脚没有分割结构体引脚的选项
  • C# NetworkStream、ConcurrentDictionary、Socket类、SerialPort、局域网IP 和广域网IP
  • 大模型--学习范式
  • Hadoop-yarn-unauthorized 未授权访问漏洞
  • 工作流调度系统(DolphinScheduler、Azkaban、Airflow、Oozie 和 XXL-JOB)
  • PyTorch 基础学习(5)- 神经网络
  • CI/CD 自动化:最大限度地提高极狐GitLab 群组的“部署冻结”影响
  • 单元训练10:定时器实现秒表功能-数组方式
  • 国外项目管理软件最佳实践:选型与应用
  • Angular组件概念
  • 嵌入式人工智能ESP32(4-PWM呼吸灯)
  • 继承 (上)【C++】
  • WPF打印控件内容