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 条评论