随着Elasticsearch闭源,OpenSearch逐渐成为了搜索引擎的开源解决方案之一。但很多用户之前的客户端代码是基于Elasticsearch的,如果把搜索引擎换成OpenSearch,就需要修改他们的客户端代码。大部分客户使用的Java客户端基本都是Java High Level REST Client。需要考虑OpenSearch与Java High Level REST Client的兼容性。
理论上,OpenSearch是兼容Elasticsearch 7.10.2版本的Java High Level Rest Client的代码的,但在实际操作中,还是需要做一点代码的改动,毕竟组件名字、版本都不一致。
官方文档:Migrating from the Elasticsearch OSS client to the OpenSearch high-level REST client is as simple as changing your Maven dependency to one that references OpenSearch’s dependency.Afterward, change all references of org.elasticsearch to org.opensearch, and you’re ready to start submitting requests to your OpenSearch cluster。
根据以上及实际操作,代码更改主要涉及三块:
pom.xml文件的引用;
代码中的import部分,从org.elasticsearch替换为org.opensearch;
特殊情况:极少部分代码的包,位置发生了调整。
pom.xml
譬如:
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.10.2</version>
</dependency>
调整为:
<dependency>
<groupId>org.opensearch.client</groupId>
<artifactId>opensearch-rest-high-level-client</artifactId>
<version>2.19.1</version>
</dependency>
import部分
譬如:
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
调整为:
import org.opensearch.client.RestClient;
import org.opensearch.client.RestClientBuilder;
import org.opensearch.client.RestHighLevelClient;
特殊情况
极少部分的包,位置发生了调整。
譬如:
import org.elasticsearch.common.xcontent.XContentBuilder
调整为:
import org.opensearch.core.xcontent.XContentBuilder;
譬如:
import org.elasticsearch.common.xcontent.XContentType;
调整为:
import org.opensearch.core.xcontent.MediaTypeRegistry;
譬如:
import org.elasticsearch.ElasticsearchStatusException;
调整为:
首字母大写的OpenSearch,而不是opensearch:
import org.opensearch.OpenSearchStatusException;
如果代码包含以上情况,请依据实际情况参考上述内容调整。