入门编辑

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

要求编辑

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

安装编辑

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

dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.14.2'
    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.2</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");
}

带有索引名称和标识符的获取请求。

目标类,这里为 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 文件夹包含完整的运行示例,展示了如何设置和使用客户端。

进一步阅读编辑

  • 了解有关 Java 客户端的 API 约定 的更多信息。