入门
编辑入门
编辑此页面指导您完成 Java 客户端的安装过程,展示如何实例化客户端,以及如何使用它执行基本的 Elasticsearch 操作。
要求
编辑- Java 8 或更高版本。
- 一个 JSON 对象映射库,以允许您的应用程序类与 Elasticsearch API 无缝集成。以下示例展示了与 Jackson 的用法。
安装
编辑在 Gradle 项目中使用 Jackson 进行安装
编辑dependencies { implementation 'co.elastic.clients:elasticsearch-java:8.17.0' implementation 'com.fasterxml.jackson.core:jackson-databind:2.17.0' }
在 Maven 项目中使用 Jackson 进行安装
编辑在您的项目的 pom.xml
中,添加以下存储库定义和依赖项
<project> <dependencies> <dependency> <groupId>co.elastic.clients</groupId> <artifactId>elasticsearch-java</artifactId> <version>8.17.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 端点可以在您的部署的 我的部署 页面上找到
您可以在“管理”页面下的“安全性”中生成 API 密钥。
有关其他连接选项,请参阅 连接 部分。
操作
编辑是时候使用 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"); }
搜索文档
编辑这是您如何使用 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 约定 的更多信息。