快速入门

编辑

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

要求

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

安装

编辑

使用 Jackson 在 Gradle 项目中安装

编辑
dependencies {
    implementation 'co.elastic.clients:elasticsearch-java:8.16.0'
    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.16.0</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);

// Use the client...

// Close the client, also closing the underlying transport object and network connections.
esClient.close();

您的 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 仓库中的示例文件夹包含完整的可运行示例,展示了如何设置和使用客户端。

进一步阅读

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