ES8(Java API)集成与使用详细介绍

  博主最近发现,网上很少有详细介绍java集成es8的集成与使用介绍。由于在es8版本当中rest-high-level-client客户端已经被弃用。maven中央仓库以及es官网也没有再去更新这个客户端api,转而使用起了新版的Java API,本文讲详细介绍Java API的使用。

首先,你需要在你的Java项目中添加Elasticsearch的Java客户端依赖。你可以使用maven,在pom.xml文件中添加以下依赖:


    co.elastic.clients
    elasticsearch-java
    8.7.1

接下来,我们将创建一个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有所帮助。

参考文献:

  • Elasticsearch Java Client
  • Elasticsearch Java Client API Reference

你可能感兴趣的:(java,开发语言)