当前位置: 首页 > 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 进行交互。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【如何使用Python绘制条形图】
  • 超详解Haproxy七层代理及配置
  • 力扣45:跳跃游戏2题解
  • 小白零基础学数学建模系列-Day4-线性规划基础与案例分析
  • 漏洞复现-Cacti命令执行漏洞 (CVE-2022-46169)
  • 牛客入门刷题
  • Java设计模式七大原则
  • 开启仓颉编程
  • 网络编程:Posix API
  • windows C++-并发和异步操作(上)
  • 国标非对称加密:RSA算法、非对称特征、js还原、jsencrypt和rsa模块解析
  • 汇量科技Mintegral发布全新产品矩阵:助力广告主高效增长与变现
  • go-zero中基本配置及获取参数
  • django.core.management.base.SystemCheckError
  • 阿布吞的基础使用——Ubuntu
  • [PHP内核探索]PHP中的哈希表
  • 【面试系列】之二:关于js原型
  • 78. Subsets
  • chrome扩展demo1-小时钟
  • const let
  • CSS 提示工具(Tooltip)
  • Docker 笔记(2):Dockerfile
  • JDK 6和JDK 7中的substring()方法
  • mysql innodb 索引使用指南
  • nodejs实现webservice问题总结
  • Python学习之路16-使用API
  • Travix是如何部署应用程序到Kubernetes上的
  • ucore操作系统实验笔记 - 重新理解中断
  • XForms - 更强大的Form
  • 分布式事物理论与实践
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 后端_MYSQL
  • 理解IaaS, PaaS, SaaS等云模型 (Cloud Models)
  • 应用生命周期终极 DevOps 工具包
  • Java性能优化之JVM GC(垃圾回收机制)
  • shell使用lftp连接ftp和sftp,并可以指定私钥
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ​TypeScript都不会用,也敢说会前端?
  • ​zookeeper集群配置与启动
  • ​字​节​一​面​
  • # 20155222 2016-2017-2 《Java程序设计》第5周学习总结
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #【QT 5 调试软件后,发布相关:软件生成exe文件 + 文件打包】
  • #快捷键# 大学四年我常用的软件快捷键大全,教你成为电脑高手!!
  • $.proxy和$.extend
  • (01)ORB-SLAM2源码无死角解析-(66) BA优化(g2o)→闭环线程:Optimizer::GlobalBundleAdjustemnt→全局优化
  • (2)Java 简介
  • (aiohttp-asyncio-FFmpeg-Docker-SRS)实现异步摄像头转码服务器
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理 第13章 项目资源管理(七)
  • *** 2003
  • **PHP分步表单提交思路(分页表单提交)
  • .net core 微服务_.NET Core 3.0中用 Code-First 方式创建 gRPC 服务与客户端