Java插入ES

介绍

Elasticsearch(简称为ES)是一个开源的分布式搜索引擎,它提供了快速、可靠和可扩展的数据存储和搜索功能。ES使用Java编写,因此使用Java来插入数据是一种常见的做法。本文将介绍如何使用Java编写代码来插入数据到ES中。

准备工作

在开始之前,确保已经安装并运行了Elasticsearch。可以从官方网站(

此外,还需要使用Java开发环境(例如Eclipse或IntelliJ IDEA)来编写和运行Java代码。确保已经安装了Java开发环境,并且已经设置好了相关的环境变量。

添加依赖

在Java代码中使用ES需要添加相关的依赖库。可以通过Maven来管理依赖。在项目的pom.xml文件中添加以下依赖:

<dependencies>
    <dependency>
        <groupId>org.elasticsearch</groupId>
        <artifactId>elasticsearch</artifactId>
        <version>7.10.1</version>
    </dependency>
</dependencies>

保存并执行Maven的构建命令,以下载所需的依赖。

连接ES

在Java代码中连接ES需要创建一个Elasticsearch客户端。可以通过以下代码创建一个ES客户端:

import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;

RestHighLevelClient client = new RestHighLevelClient(
        RestClient.builder(new HttpHost("localhost", 9200, "http")));

上述代码创建了一个RestHighLevelClient对象,用于与ES进行交互。其中,"localhost"表示ES的主机名,9200表示ES的端口号。

创建索引

在将数据插入到ES之前,需要先创建一个索引。索引类似于数据库中的表,用于存储和组织数据。

以下是创建一个名为"my_index"的索引的示例代码:

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

CreateIndexRequest request = new CreateIndexRequest("my_index");
CreateIndexResponse response = client.indices().create(request);

上述代码创建了一个CreateIndexRequest对象,设置索引的名称为"my_index"。然后,通过client.indices().create(request)方法发送请求来创建索引。

插入数据

在索引创建完成后,可以开始插入数据。ES使用JSON格式来存储和检索数据,因此需要将数据转换为JSON格式。

以下是向"my_index"索引中插入一条数据的示例代码:

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.common.xcontent.XContentType;

String jsonString = "{" +
        "\"user\":\"John\"," +
        "\"message\":\"Hello Elasticsearch\"" +
        "}";

IndexRequest request = new IndexRequest("my_index")
        .source(jsonString, XContentType.JSON);

IndexResponse response = client.index(request);

上述代码创建了一个IndexRequest对象,设置索引的名称为"my_index",并将JSON字符串作为数据源。然后,通过client.index(request)方法发送请求来插入数据。

关闭连接

在数据插入完成后,需要关闭与ES的连接以释放资源。

以下是关闭ES客户端连接的示例代码:

client.close();

完整示例

以下是一个完整的Java插入ES的示例代码:

import org.elasticsearch.action.admin.indices.create.CreateIndexRequest;
import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.apache.http.HttpHost;

public class InsertDataToES {

    public static void main(String[] args) {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder(new HttpHost("localhost", 9200, "http")));

        try {
            CreateIndexRequest createIndexRequest = new CreateIndexRequest("my_index");
            CreateIndexResponse createIndexResponse = client.indices().create(createIndexRequest);

            String jsonString = "{" +
                    "\"user\":\"John\"," +
                    "\"message\":\"Hello Elasticsearch\"" +
                    "}";

            IndexRequest indexRequest =