Java的ES新增更新数据

Elasticsearch(简称ES)是一个开源的分布式搜索和分析引擎,通过RESTful API提供高性能的全文搜索、结构化搜索和分析功能。在Java中,我们可以使用Elasticsearch的Java API来对数据进行新增和更新操作。

准备工作

在开始编写Java代码之前,我们需要先搭建好Elasticsearch环境,并导入相关的依赖包。以下是一个示例的pom.xml文件:

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

新增数据

要在ES中新增数据,我们需要创建一个IndexRequest对象,并指定要操作的索引、类型和文档ID。然后,我们将要新增的数据以JSON格式设置到IndexRequest对象中,并调用Index方法进行新增操作。以下是一个示例代码:

import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.index.IndexResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;

import java.io.IOException;

public class ESExample {
    public static void main(String[] args) {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder("localhost:9200"));

        IndexRequest request = new IndexRequest("my_index")
                .type("my_type")
                .id("1")
                .source("{\"name\":\"John\", \"age\":30}", XContentType.JSON);

        try {
            IndexResponse response = client.index(request, RequestOptions.DEFAULT);
            System.out.println("新增数据成功,ID:" + response.getId());
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

更新数据

要在ES中更新数据,我们需要创建一个UpdateRequest对象,并指定要操作的索引、类型和文档ID。然后,我们将要更新的数据以JSON格式设置到UpdateRequest对象中,并调用Update方法进行更新操作。以下是一个示例代码:

import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.action.update.UpdateResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;

import java.io.IOException;

public class ESExample {
    public static void main(String[] args) {
        RestHighLevelClient client = new RestHighLevelClient(
                RestClient.builder("localhost:9200"));

        UpdateRequest request = new UpdateRequest("my_index", "my_type", "1")
                .doc("{\"name\":\"John Doe\", \"age\":35}", XContentType.JSON);

        try {
            UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
            System.out.println("更新数据成功,ID:" + response.getId());
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            client.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

流程图

以下是新增和更新数据的流程图:

flowchart TD
    A(开始) --> B{ES新增数据}
    B --> C{ES更新数据}
    C --> D(结束)

总结

本文介绍了在Java中使用Elasticsearch的Java API对数据进行新增和更新操作的方法。通过创建相应的请求对象,设置要操作的索引、类型和文档ID,然后将数据以JSON格式设置到请求对象中,并调用相应的方法进行操作。希望这篇文章对你理解Java的ES新增和更新数据有所帮助。

参考链接:

  • [Elasticsearch Java API](