0
点赞
收藏
分享

微信扫一扫

Java 批量向es添加数据

Java 批量向es添加数据实现方法

概述

本文将介绍如何使用Java批量向Elasticsearch(简称es)添加数据。为了更好地指导刚入行的小白,我们将以步骤的形式讲解整个过程,并提供相应的代码和注释。

在开始之前,我们需要明确下面几个问题:

  1. 你已经了解Java的基础知识,并熟悉Elasticsearch的基本概念。
  2. 你已经安装并配置好Elasticsearch,并且能够通过Java代码访问它。

步骤

步骤1:导入所需的依赖

在开始使用Java向es添加数据之前,我们需要在项目中导入Elasticsearch的Java客户端依赖。在你的项目的 pom.xml 文件中添加以下依赖:

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

这个依赖将提供我们与es进行交互的必要工具。

步骤2:建立与es的连接

在开始添加数据之前,我们需要建立与es的连接。创建一个 ESClient 类,使用以下代码建立连接:

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

public class ESClient {
    private static final String HOST = "localhost";
    private static final int PORT = 9200;

    private RestHighLevelClient client;

    public ESClient() {
        client = new RestHighLevelClient(
                RestClient.builder(
                        new HttpHost(HOST, PORT, "http")));
    }

    public RestHighLevelClient getClient() {
        return client;
    }
}

这段代码使用了RestHighLevelClient来建立与es的连接。你需要根据你的es实例的主机名和端口号进行相应的修改。

步骤3:创建添加数据的方法

现在我们可以开始编写添加数据的方法了。在 ESClient 类中添加以下代码:

import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.bulk.BulkResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.Index;

import java.io.IOException;
import java.util.List;
import java.util.Map;

public class ESClient {
    // ...

    public void bulkIndex(String index, String type, List<Map<String, Object>> documents) {
        BulkRequest request = new BulkRequest();

        for (Map<String, Object> document : documents) {
            IndexRequest indexRequest = new IndexRequest(index, type)
                    .source(document, XContentType.JSON);
            request.add(indexRequest);
        }

        try {
            BulkResponse bulkResponse = client.bulk(request, RequestOptions.DEFAULT);
            if (bulkResponse.hasFailures()) {
                // 处理错误
            }
        } catch (IOException e) {
            // 处理异常
        }
    }
}

这段代码使用了BulkRequest来批量添加数据。你需要提供要添加的数据的索引(index)、类型(type)以及一个包含多个文档的列表。每个文档是一个键值对的Map。

步骤4:调用添加数据的方法

现在我们可以在主程序中调用添加数据的方法了。创建一个 Main 类,使用以下代码:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Main {
    public static void main(String[] args) {
        ESClient esClient = new ESClient();

        List<Map<String, Object>> documents = new ArrayList<>();

        Map<String, Object> document1 = new HashMap<>();
        document1.put("title", "Java 批量向es添加数据");
        document1.put("content", "这是第一篇文档的内容。");
        documents.add(document1);

        Map<String, Object> document2 = new HashMap<>();
        document2.put("title", "Java 批量向es添加数据 - 第二篇");
        document2.put("content", "这是第二篇文档的内容。");
        documents.add(document2);

        esClient.bulkIndex("my_index", "my_type", documents);
    }
}

这段代码创建了两个文档,并将它们添加到一个文档列表中。然后调用了ESClient类的bulkIndex方法来批量添加数据。你需要根据你的索引和类型进行相应的修改。

步骤5:运行

举报

相关推荐

0 条评论