es的java调用

Elasticsearch Java 客户端调用方法

Elasticsearch 提供了两种主要的 Java 客户端调用方式:High Level REST Client (官方推荐)和 Java API Client(8.x 版本后新增)。以下分别介绍两种方式的使用方法。


High Level REST Client(7.x-8.x 兼容)

适用于 Elasticsearch 7.x 和 8.x 版本,需添加 Maven 依赖:

XML 复制代码
<dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.17.0</version>
</dependency>

初始化客户端

java 复制代码
RestHighLevelClient client = new RestHighLevelClient(
    RestClient.builder(new HttpHost("localhost", 9200, "http"))
);

索引文档

java 复制代码
IndexRequest request = new IndexRequest("index_name")
    .id("1")
    .source("field1", "value1", "field2", "value2");
IndexResponse response = client.index(request, RequestOptions.DEFAULT);

搜索文档

java 复制代码
SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(QueryBuilders.matchQuery("field1", "value1"));
searchRequest.source(sourceBuilder);
SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);

Java API Client(8.x+ 推荐)

Elasticsearch 8.x 推出的新客户端,需添加依赖:

XML 复制代码
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.12.0</version>
</dependency>

初始化客户端

java 复制代码
RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200)).build();
ElasticsearchTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
ElasticsearchClient client = new ElasticsearchClient(transport);

索引文档

java 复制代码
Product product = new Product("1", "Elasticsearch Guide");
IndexResponse response = client.index(i -> i
    .index("products")
    .id(product.getId())
    .document(product));

搜索文档

java 复制代码
SearchResponse<Product> response = client.search(s -> s
    .index("products")
    .query(q -> q
        .match(t -> t
            .field("name")
            .query("Guide"))),
    Product.class);

通用注意事项

  1. 连接池管理:确保客户端单例化,避免重复创建。
  2. 异常处理 :捕获 IOExceptionElasticsearchException
  3. 版本兼容性:客户端版本应与 Elasticsearch 服务端主版本号一致。
  4. 异步操作 :两种客户端均支持异步调用(如 client.indexAsync())。

示例代码完整结构

java 复制代码
// 关闭客户端(finally 块中调用)
client.close();

两种方式均可实现完整 CRUD 操作,8.x 用户建议优先使用新 Java API Client 以获得更好的类型安全和流畅 API 体验。

相关推荐
weixin_BYSJ198711 分钟前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
AI小码17 分钟前
LLM 应用的缓存工程:当每次 API 调用都在燃烧成本
java·人工智能·spring·计算机·llm·编程·api
Hui Baby1 小时前
Spring Security
java·后端·spring
IT笔记1 小时前
【Rust】Rust Match 模式匹配详解
java·开发语言·rust
我才是银古2 小时前
构建 Java GIS 工具库:从碎片化 API 到统一抽象的设计实践
java·gis·geotools·gdal·esri
TPBoreas2 小时前
配置信息防泄露方案:.env 环境隔离详解(dotenv-java)
java·开发语言
敲代码的嘎仔3 小时前
实习日志day6--实习日志day6--title命名规范化&businessType纠正&补充缺失的@Log注解&报警与通信模块补充&产出阶段总结文档
java·开发语言·人工智能·git·python·实习·大二
编程(变成)小辣鸡3 小时前
Spring事务失效场景
java·后端·spring
阿里云大数据AI技术4 小时前
Elasticsearch 智能助手:Agent 让运维从经验驱动迈向智能协同
人工智能·elasticsearch·agent
极客先躯4 小时前
高级java每日一道面试题-2026年03月30日-实战篇[Docker]-如何监控容器的网络流量?
java·运维·docker·容器·prometheus·高级面试