ElasticsearchClient入门指南

在本教程中,我们将探讨如何使用Elasticsearch的官方Java客户端 - ElasticsearchClient。这个强大的工具允许您的Java应用程序与Elasticsearch集群进行交互,执行各种操作,如索引文档、执行搜索查询等。

前提条件

在开始之前,确保您的项目中已经包含了必要的依赖。您可以通过Maven添加以下依赖:

xml 复制代码
<dependency>
    <groupId>co.elastic.clients</groupId>
    <artifactId>elasticsearch-java</artifactId>
    <version>8.10.0</version>
</dependency>
<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.12.3</version>
</dependency>

创建ElasticsearchClient

首先,我们需要创建一个ElasticsearchClient实例。这涉及几个步骤:

  1. 创建一个RestClient实例
  2. 使用RestClient创建一个ElasticsearchTransport实例
  3. 使用transport创建ElasticsearchClient实例

以下是代码示例:

java 复制代码
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.ElasticsearchTransport;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.HttpHost;
import org.elasticsearch.client.RestClient;

// 创建低级客户端
RestClient restClient = RestClient.builder(
    new HttpHost("localhost", 9200)).build();

// 创建传输层
ElasticsearchTransport transport = new RestClientTransport(
    restClient, new JacksonJsonpMapper());

// 创建API客户端
ElasticsearchClient client = new ElasticsearchClient(transport);

执行搜索查询

现在我们有了ElasticsearchClient实例,让我们执行一个简单的搜索查询:

java 复制代码
import co.elastic.clients.elasticsearch._types.query_dsl.MatchQuery;
import co.elastic.clients.elasticsearch.core.SearchResponse;

try {
    // 执行搜索请求
    SearchResponse<Object> response = client.search(s -> s
        .index("my-index")
        .query(q -> q
            .match(new MatchQuery.Builder()
                .field("title")
                .query("elasticsearch")
                .build()
            )
        ),
        Object.class
    );

    // 处理响应
    long totalHits = response.hits().total().value();
    System.out.println("Total hits: " + totalHits);

    // 遍历搜索结果
    response.hits().hits().forEach(hit -> {
        System.out.println("Found document: " + hit.source());
    });

} catch (IOException e) {
    e.printStackTrace();
}

这个例子展示了如何:

  1. 构建一个match查询,搜索标题字段中包含"elasticsearch"的文档
  2. 执行搜索请求
  3. 获取总命中数
  4. 遍历并打印搜索结果

关闭客户端

最后,当您完成所有操作后,别忘了关闭客户端:

java 复制代码
try {
    restClient.close();
} catch (IOException e) {
    e.printStackTrace();
}

结论

本教程介绍了ElasticsearchClient的基本用法。我们学习了如何创建客户端、执行搜索查询和处理结果。ElasticsearchClient提供了丰富的API,允许您执行各种复杂的操作。随着您对Elasticsearch的深入了解,您将能够利用这个客户端执行更高级的查询和操作。

记住,这只是一个起点。Elasticsearch提供了大量的功能,包括聚合、地理空间查询、文档更新等。继续探索官方文档,以充分利用Elasticsearch的强大功能!

相关推荐
志栋智能1 小时前
运维超自动化的版本控制与回滚机制
运维·自动化
中云DDoS CC防护蔡蔡2 小时前
DDOS和CC攻击谁更可怕
运维·服务器·经验分享·网络安全·ddos
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十六):mmap — 用户态“申请内存“的真相
linux·运维·服务器
ClickHouseDB2 小时前
ClickHouse Cloud 与 Snowflake 实时性价比对比:CostBench 测试中的 412 倍差距来
运维·数据库·系统架构
欧米欧2 小时前
Linux系统篇(七),环境变量的底层溯源,核心获取机制与安全应用
linux·运维·服务器
Ruiery2 小时前
Linux 6.6内核内存管理深度解析(十八):KASLR 内核地址空间随机化
linux·运维·服务器·安全
todoitbo3 小时前
群晖NAS部署JmalCloud:Docker安装、文件管理、博客与公网访问完整教程
运维·docker·容器
时间售卖铺3 小时前
触发器与函数实战:MySQL高效编程秘诀
运维·数据库·mysql·云原生
前端精髓3 小时前
调用大模型API
运维·服务器·microsoft
跨境小彭4 小时前
Temu 全托管模式下,SKU 利润核算的实践复盘
大数据·运维·人工智能·自动化·temu