Elasticsearch Java 客户端:Java Client 完整使用指南

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

Elasticsearch Java 客户端:完整指南



Elasticsearch 是一个基于 Apache Lucene 构建的强大分布式搜索与分析引擎。为了从 Java 应用程序中集成 Elasticsearch,Elastic 公司提供了官方的 Elasticsearch Java Client(此前称为 High-Level REST Client)。本文将详细讲解如何使用该客户端执行核心操作:连接、文档索引、CRUD 操作以及全文搜索。



什么是 Elasticsearch Java Client?



Elasticsearch Java Client 是一个现代、类型安全的 API,用于从 Java 与 Elasticsearch 进行交互。它基于异步 HTTP 客户端构建,支持从 7.x 开始的所有 Elasticsearch 版本。主要优势包括:



  • 全面支持所有 Elasticsearch API(索引、搜索、聚合、集群管理)。
  • 异步与响应式——内置对 CompletableFuture 和响应式流的支持。
  • 类型安全的 DSL 查询——在编译阶段最大限度减少错误。
  • 配置简单——依赖项数量最少。


安装与配置



要在 Maven 项目中引入该客户端,请在 pom.xml 中添加以下依赖:



<dependency>    <groupId>co.elastic.clients</groupId>    <artifactId>elasticsearch-java</artifactId>    <version>8.15.0</version></dependency>


对于 Gradle(build.gradle):



implementation 'co.elastic.clients:elasticsearch-java:8.15.0'


此外,还需要 Jackson 用于 JSON 的序列化/反序列化:



<dependency>    <groupId>com.fasterxml.jackson.core</groupId>    <artifactId>jackson-databind</artifactId>    <version>2.17.0</version></dependency>


创建客户端与连接



要创建客户端,需要指定 Elasticsearch 的主机和端口。以下是基本配置示例:



import co.elastic.clients.elasticsearch.ElasticsearchClient;import co.elastic.clients.json.jackson.JacksonJsonpMapper;import co.elastic.clients.transport.rest_client.RestClientTransport;import org.apache.http.Header;import org.apache.http.message.BasicHeader;import org.elasticsearch.client.RestClient;

public class ElasticsearchExample {

public static ElasticsearchClient createClient() { // 创建低层级 REST 客户端 RestClient restClient = RestClient.builder( new HttpHost("localhost", 9200, "http") ).setDefaultHeaders(new Header[]{ new BasicHeader("Content-Type", "application/json") }).build();

// 使用 Jackson 映射器的传输层 RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());

// 高层级客户端 return new ElasticsearchClient(transport); }

public static void main(String[] args) throws IOException { ElasticsearchClient client = createClient(); System.out.println("客户端创建成功!"); client.close(); }}


索引操作



在开始工作之前,需要先创建索引。以下是创建带映射的索引示例:



public static void createIndex(ElasticsearchClient client, String indexName) throws IOException {    client.indices().create(c -> c            .index(indexName)            .mappings(m -> m                    .properties("title", p -> p.text(t -> t))                    .properties("content", p -> p.text(t -> t))                    .properties("price", p -> p.double_(d -> d))                    .properties("createdAt", p -> p.date(d -> d))                    

推荐