从 High Level Rest Client 迁移到全新的库
Elasticsearch Java API 客户端是一个全新的库,和之前的 High Level Rest Client (HLRC) 无关。 这是我们深思熟虑之后的选择,它提供一个独立于 Elasticsearch 服务器代码之外的库,并为所有 Elasticsearch 功能提供了一套一致性非常高且更易于使用的 API。
因此,在从之前的 HLRC(High Level Rest Client) 迁移之前,你可能需要重写一部分应用代码。 但是,这个迁移过程可以一点一点的逐步进行,因为在一个应用中可以同时包含新旧两个客户端库,而无需任何额外开销。
迁移攻略
这里提供几种不同的方式,让你的应用顺利地从 HLRC 代码转换为新的代码。
例如:
-
保持现有的代码不变,在应用开发新功能的时候,使用全新的 Java API 客户端,并在后续逐步迁移现有代码。
-
根据新客户端比 HLRC 更易于使用的部分重写应用代码,比如所有与搜索相关的代码。
-
利用新客户端与 JSON 对象的无缝集成,重写那些在 JSON 和应用业务类之间做映射的旧代码。
使用与 HLRC 和新客户端相同的传输层
为了避免应用在同时使用新客户端和旧 HLRC 的过渡阶段出现额外开销,这两个客户端公用一个底层Rest客户端(Low Level Rest Client), 这是管理所有连接、重试策略、节点嗅探等功能的网络层。
下面的代码向我们展示了如何使用同一个 HTTP 客户端初始化两种客户端:
// Create the low-level client
RestClientBuilder httpClientBuilder = RestClient.builder(
new HttpHost("localhost", 9200)
);
// Create the HLRC
RestHighLevelClient hlrc = new RestHighLevelClient(httpClientBuilder);
// Create the new Java Client with the same low level client
ElasticsearchTransport transport = new RestClientTransport(
hlrc.getLowLevelClient(),
new JacksonJsonpMapper()
);
ElasticsearchClient esClient = new ElasticsearchClient(transport);
// hlrc and esClient share the same httpClient