隨著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;如果代碼包含以上情況,請依據實際情況參考上述內容調整。