Java连接ES集群

简介

Elasticsearch(ES)是一个基于Lucene的分布式搜索和分析引擎,适用于大规模数据集的实时搜索和分析。在使用Java开发应用程序时,连接ES集群是必不可少的一项任务。本文将介绍如何使用Java连接ES集群,并提供相关的代码示例。

准备工作

在开始之前,我们需要准备以下环境:

  • Java Development Kit(JDK)
  • Elasticsearch集群

确保JDK已成功安装,并且可以运行Java程序。此外,还需要一个ES集群,可以在单个机器上模拟一个简单的集群。

安装Elasticsearch

首先,我们需要安装Elasticsearch。请参考[Elasticsearch官方文档](

安装完成后,启动ES集群。默认情况下,ES会在本地的9200端口上监听HTTP请求。

添加依赖

在Java项目中,我们需要添加Elasticsearch客户端的依赖项。可以使用Maven或Gradle来管理项目依赖。以下是使用Maven的示例:

<dependencies>
  <dependency>
    <groupId>org.elasticsearch.client</groupId>
    <artifactId>elasticsearch-rest-high-level-client</artifactId>
    <version>7.15.0</version>
  </dependency>
</dependencies>

连接ES集群

我们可以使用Elasticsearch的高级REST客户端来连接ES集群。以下是连接ES集群的示例代码:

import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

public class ESConnectionExample {
    public static void main(String[] args) {
        // 创建RestHighLevelClient实例
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost("localhost", 9200, "http")
                )
        );

        // 使用client执行ES相关操作
        // ...

        // 关闭连接
        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的代码中,我们首先创建了一个RestHighLevelClient实例,并指定ES集群的主机和端口。然后,我们可以使用client对象来执行与ES相关的操作。

示例操作

接下来,我们将介绍一些常见的示例操作,包括创建索引、插入文档、搜索文档等。

创建索引

要在ES集群中创建一个新索引,可以使用如下代码:

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.indices.CreateIndexRequest;

public class IndexExample {
    public static void main(String[] args) {
        // 创建索引请求
        CreateIndexRequest request = new CreateIndexRequest("my_index");

        // 发送请求到ES集群
        CreateIndexResponse createIndexResponse;
        try {
            createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
            boolean acknowledged = createIndexResponse.isAcknowledged();
            if (acknowledged) {
                System.out.println("索引创建成功");
            } else {
                System.out.println("索引创建失败");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

在上面的示例中,我们创建了一个名为"my_index"的索引。如果索引创建成功,将会打印"索引创建成功",否则将会打印"索引创建失败"。

插入文档

要向ES索引中插入文档,可以使用如下代码:

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;

public class InsertExample {
    public static void main(String[] args) {
        // 创建插入请求
        IndexRequest request = new IndexRequest("my_index");
        request.id("1");
        String jsonString = "{" +
                "\"name\":\"John\"," +
                "\"age\":30," +
                "\"city\":\"New York\"" +
                "}";
        request.source(jsonString, XContentType.JSON);

        // 发送请求到ES集群
        IndexResponse indexResponse;
        try {
            indexResponse = client.index(request, RequestOptions.DEFAULT);
            if (indexResponse.getResult() == DocWriteResponse.Result.CREATED) {
                System.out.println("文档插入成功");