博主最近发现,网上很少有详细介绍java集成es8的集成与使用介绍。由于在es8版本当中rest-high-level-client客户端已经被弃用。maven中央仓库以及es官网也没有再去更新这个客户端api,转而使用起了新版的Java API,本文讲详细介绍Java API的使用。
首先,你需要在你的Java项目中添加Elasticsearch的Java客户端依赖。你可以使用maven,在pom.xml
文件中添加以下依赖:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.7.1</version>
</dependency>
接下来,我们将创建一个ES连接,并配置连接参数。这包括指定ES集群的主机和端口号等信息。以下是一个示例:
import co.elastic.clients.base.Configuration;
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.elasticsearch.ElasticsearchClientBuilder;
public class ElasticsearchConnector {
private ElasticsearchClient client;
public ElasticsearchConnector() {
this.client = new ElasticsearchClientBuilder()
.configuration(Configuration.builder()
.host("localhost")
.port(9200)
.build())
.build();
}
public ElasticsearchClient getClient() {
return client;
}
public void closeConnection() {
client.close();
}
}
上述代码创建了一个包装类ElasticsearchConnector
,它使用ElasticsearchClientBuilder
建立连接并返回客户端实例。host
表示ES集群的主机地址,port
表示ES集群的端口号。你可以根据你的具体应用进行调整。
接下来,我们可以使用ElasticsearchClient
进行各种操作。以下是一些常见的操作示例:
1、创建索引
import co.elastic.clients.elasticsearch._core.IndexRequest;
public class IndexOperations {
public void createIndex(String indexName) {
client.indices().create(indexRequest -> indexRequest
.index(indexName))
.block();
System.out.println("Index created successfully.");
}
}
上述代码使用indices()
方法获取索引操作的API,然后使用create()
方法创建一个索引。你可以通过指定索引名称、设置映射等方式进行更详细的配置。
2、索引文档:
import co.elastic.clients.elasticsearch._core.index.IndexRequest;
import co.elastic.clients.elasticsearch._core.index.IndexResponse;
public class DocumentOperations {
public void indexDocument(String indexName, String documentId, String jsonDocument) {
IndexResponse response = client.index(indexRequest -> indexRequest
.index(indexName)
.id(documentId)
.source(jsonDocument))
.block();
System.out.println("Document indexed: " + response.getId());
}
}
上述代码使用index()
方法将文档索引到指定的索引中。你可以提供文档的JSON表示形式作为源数据,也可以使用对象映射工具(例如Jackson)将Java对象转换为JSON。
3、搜索文档:
import co.elastic.clients.elasticsearch._core.search.SearchRequest;
import co.elastic.clients.elasticsearch._core.search.SearchResponse;
public class DocumentSearch {
public void searchDocuments(String indexName, String field, String value) {
SearchResponse response = client.search(searchRequest -> searchRequest
.index(indexName)
.source(sourceBuilder -> sourceBuilder
.query(queryBuilders -> queryBuilders
.matchQuery(field, value))))
.block();
// 处理搜索结果
}
}
上述代码使用search()
方法执行搜索操作。你可以指定要搜索的索引名称,以及匹配的字段和值。搜索结果将包装在SearchResponse
对象中,你可以根据具体需求进行处理。
总结一下,使用co.elastic.clients API实现Java与ES8的集成非常简单和灵活。我们可以通过几行代码建立连接,并使用各种提供的方法执行索引、搜索和更新等操作。希望本文能够对你在Java中集成ES8有所帮助。
参考文献: