入门编辑

本页面将指导您完成 Java 客户端的安装过程,向您展示如何实例化客户端,以及如何使用它执行基本的 Elasticsearch 操作。

要求编辑

  • Java 8 或更高版本。
  • 一个 JSON 对象映射库,允许将应用程序类与 Elasticsearch API 无缝集成。以下示例展示了如何使用 Jackson。

安装编辑

在使用 Jackson 的 Gradle 项目中安装编辑

dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.14.3'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0'
}

在使用 Jackson 的 Maven 项目中安装编辑

在项目的 pom.xml 文件中,添加以下存储库定义和依赖项

<project>
  <dependencies>

    <dependency>
      <groupId>co.elastic.clients</groupId>
      <artifactId>elasticsearch-java</artifactId>
      <version>8.14.3</version>
    </dependency>

    <dependency>
      <groupId>com.fasterxml.jackson.core</groupId>
      <artifactId>jackson-databind</artifactId>
      <version>2.17.0</version>
    </dependency>

  </dependencies>
</project>

有关更多信息,请参阅安装页面。

连接编辑

您可以使用 API 密钥和 Elasticsearch 端点连接到 Elastic Cloud。

// URL and API key
String serverUrl = "https://127.0.0.1:9200";
String apiKey = "VnVhQ2ZHY0JDZGJrU...";

// Create the low-level client
RestClient restClient = RestClient
    .builder(HttpHost.create(serverUrl))
    .setDefaultHeaders(new Header[]{
        new BasicHeader("Authorization", "ApiKey " + apiKey)
    })
    .build();

// Create the transport with a Jackson mapper
ElasticsearchTransport transport = new RestClientTransport(
    restClient, new JacksonJsonpMapper());

// And create the API client
ElasticsearchClient esClient = new ElasticsearchClient(transport);

您可以在部署的我的部署页面上找到您的 Elasticsearch 端点

Finding Elasticsearch endpoint

您可以在管理页面的“安全”下生成 API 密钥。

Create API key

有关其他连接选项,请参阅连接部分。

操作编辑

是时候使用 Elasticsearch 了!本节将带您了解 Elasticsearch 的基本和最重要的操作。有关更多操作和更高级的示例,请参阅使用 Java API 客户端页面。

创建索引编辑

以下是创建 product 索引的方法

esClient.indices().create(c -> c
    .index("products")
);

索引文档编辑

这是一种索引文档的简单方法,这里是一个 Product 应用程序对象

Product product = new Product("bk-1", "City bike", 123.0);

IndexResponse response = esClient.index(i -> i
    .index("products")
    .id(product.getSku())
    .document(product)
);

logger.info("Indexed with version " + response.version());

获取文档编辑

您可以使用以下代码获取文档

GetResponse<Product> response = esClient.get(g -> g
    .index("products") 
    .id("bk-1"),
    Product.class      
);

if (response.found()) {
    Product product = response.source();
    logger.info("Product name " + product.getName());
} else {
    logger.info ("Product not found");
}

get 请求,包含索引名称和标识符。

目标类,这里为 Product

搜索文档编辑

以下是使用 Java 客户端创建单个匹配查询的方法

String searchText = "bike";

SearchResponse<Product> response = esClient.search(s -> s
        .index("products")
        .query(q -> q
            .match(t -> t
                .field("name")
                .query(searchText)
            )
        ),
    Product.class
);

更新文档编辑

以下是更新文档的方法,例如添加新字段

Product product = new Product("bk-1", "City bike", 123.0);

esClient.update(u -> u
        .index("products")
        .id("bk-1")
        .upsert(product),
    Product.class
);

删除文档编辑

esClient.delete(d -> d.index("products").id("bk-1"));

删除索引编辑

esClient.indices().delete(d -> d
    .index("products")
);

示例编辑

Github 存储库中的 examples 文件夹包含完整的工作示例,展示了如何设置和使用客户端。

延伸阅读编辑