从高级 REST 客户端迁移
编辑从高级 REST 客户端迁移
编辑Elasticsearch Java API 客户端是一个全新的客户端库,与旧版的高级 REST 客户端 (HLRC) 无关。这是一个经过深思熟虑的选择,目的是提供一个独立于 Elasticsearch 服务器代码的库,并为所有 Elasticsearch 功能提供非常一致且易于使用的 API。
因此,从 HLRC 迁移需要对应用程序进行一些代码重写。但是,此转换可以逐步进行,因为这两个客户端库可以在单个应用程序中共存,而不会产生任何操作开销。
兼容模式:使用 7.17 客户端与 Elasticsearch 8.x
编辑通过启用 HLRC 的兼容模式(参见下面的代码示例),可以将 HLRC 版本 7.17
与 Elasticsearch 版本 8.x
一起使用。在此模式下,HLRC 发送附加标头,指示 Elasticsearch 8.x
运行方式类似于 7.x
服务器。
Java API 客户端不需要此设置,因为始终启用兼容模式。
您可以将 HLRC 版本 7.x
与 Java API 客户端版本 8.x
一起使用。
dependencies { implementation 'co.elastic.clients:elasticsearch-java:8.16.0' implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.17.4' // other dependencies }
参见 安装 |
使用相同的 HTTP 客户端与 HLRC 和 Java API 客户端
编辑为了避免在应用程序同时使用 HLRC 和新的 Java API 客户端的过渡阶段产生任何操作开销,这两个客户端可以共享相同的低级 REST 客户端,这是管理所有连接、轮询策略、节点嗅探等的网络层。
下面的代码显示了如何使用相同的 HTTP 客户端初始化这两个客户端。
// Create the low-level client RestClient httpClient = RestClient.builder( new HttpHost("localhost", 9200) ).build(); // Create the HLRC RestHighLevelClient hlrc = new RestHighLevelClientBuilder(httpClient) .setApiCompatibilityMode(true) .build(); // Create the Java API Client with the same low level client ElasticsearchTransport transport = new RestClientTransport( httpClient, new JacksonJsonpMapper() ); ElasticsearchClient esClient = new ElasticsearchClient(transport); // hlrc and esClient share the same httpClient
迁移策略
编辑您可以通过多种方式开始从应用程序代码中迁移 HLRC。
例如
- 保持现有代码不变,并对应用程序中的新功能使用新的 Java API 客户端,然后稍后迁移现有代码;
- 重写应用程序中新的 Java API 客户端比 HLRC 更易于使用的那部分代码,例如与搜索相关的所有内容;
- 重写需要将应用程序对象映射到/从 JSON 的部分,利用新的 Java API 客户端与 JSON 对象映射器的紧密集成。