ElasticSearch 实战:Java操作ElasticSearch索引之CRUD

本文详细介绍了如何在Java中使用Elasticsearch的HighLevelRESTClient进行索引的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,包括配置客户端、执行操作和关闭连接的示例。
摘要由CSDN通过智能技术生成

在 Java 中操作 Elasticsearch 进行索引(index)的 CRUD(Create, Read, Update, Delete)操作,通常会使用官方提供的 Elasticsearch Java High Level REST Client 或者 Elasticsearch Java Low Level REST Client。这里以 High Level REST Client 为例,给出索引操作的实战代码示例。假定您已经添加了 Elasticsearch Java Client 的依赖到您的项目中,并且已配置好与 Elasticsearch 服务器的连接。

准备工作

首先,确保已导入相关依赖。如果您使用 Maven,添加以下依赖到 pom.xml 文件中:

<dependencies>
    <dependency>
        <groupId>org.elasticsearch.client</groupId>
        <artifactId>elasticsearch-rest-high-level-client</artifactId>
        <version>最新稳定版</version> <!-- 替换为实际使用的 Elasticsearch 版本对应的客户端版本 -->
    </dependency>
</dependencies>

配置 Elasticsearch 客户端

创建一个 ElasticsearchClient 实例,配置连接参数:

import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.client.indices.CreateIndexRequest;
import org.elasticsearch.client.indices.CreateIndexResponse;
import org.elasticsearch.client.indices.GetIndexRequest;
import org.elasticsearch.client.indices.PutMappingRequest;
import org.elasticsearch.common.xcontent.XContentType;

// ...

RestHighLevelClient client = new RestHighLevelClient(
    RestClient.builder(
        new HttpHost("your_elasticsearch_host", 9200, "http"), // 替换为您的 Elasticsearch 主机地址、端口和协议
        new HttpHost("your_elasticsearch_host", 9201, "http") // 如果有多个节点,可以添加更多 HttpHost
    )
);

索引操作

创建索引(Create)

定义索引名和映射(mapping):

String indexName = "my_index";
String mappingSource = "{\n" +
    "  \"properties\": {\n" +
    "    \"title\": {\n" +
    "      \"type\": \"text\"\n" +
    "    },\n" +
    "    \"author\": {\n" +
    "      \"type\": \"keyword\"\n" +
    "    }\n" +
    "  }\n" +
    "}";

创建索引:

CreateIndexRequest request = new CreateIndexRequest(indexName);
request.source(mappingSource, XContentType.JSON);

CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);

if (createIndexResponse.isAcknowledged()) {
    System.out.println("索引 " + indexName + " 创建成功");
} else {
    System.out.println("索引 " + indexName + " 创建失败");
}
读取索引(Read)

检查索引是否存在:

GetIndexRequest getIndexRequest = new GetIndexRequest(indexName);

boolean exists = client.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
if (exists) {
    System.out.println("索引 " + indexName + " 存在");
} else {
    System.out.println("索引 " + indexName + " 不存在");
}
更新索引(Update)

索引一旦创建,其名称和映射通常不直接更改。但如果确实需要更新映射,可以使用 PutMappingRequest 类。请注意,不是所有的映射更新都是实时无损的,具体取决于更新类型和 Elasticsearch 版本。以下是一个简单的映射更新示例:

String updatedMappingSource = "{...}"; // 新的映射源
PutMappingRequest putMappingRequest = new PutMappingRequest(indexName);
putMappingRequest.source(updatedMappingSource, XContentType.JSON);

AcknowledgedResponse response = client.indices().putMapping(putMappingRequest, RequestOptions.DEFAULT);

if (response.isAcknowledged()) {
    System.out.println("索引 " + indexName + " 映射更新成功");
} else {
    System.out.println("索引 " + indexName + " 映射更新失败");
}
删除索引(Delete)

删除指定索引:

DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest(indexName);

AcknowledgedResponse deleteResponse = client.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);

if (deleteResponse.isAcknowledged()) {
    System.out.println("索引 " + indexName + " 删除成功");
} else {
    System.out.println("索引 " + indexName + " 删除失败");
}

关闭客户端

在完成所有操作后,记得关闭客户端以释放资源:

client.close();

以上代码展示了如何使用 Elasticsearch Java High Level REST Client 进行索引的 CRUD 操作。请注意,实际应用中应处理可能出现的异常,并遵循良好的编程实践,如使用 try-with-resources 语句自动关闭客户端。此外,对于生产环境,请确保遵循最佳安全实践,如使用身份验证、授权和 SSL/TLS 加密。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值