You need to enable JavaScript to run this app.
文档中心
云搜索服务

云搜索服务

复制全文
下载 pdf
通过 Java 连接实例
Elasticsearch Java SDK 切换到 OpenSearch Java SDK
复制全文
下载 pdf
Elasticsearch Java SDK 切换到 OpenSearch Java SDK
云搜索服务目前支持 Elasticsearch 7.10.2 及更新版本和 OpenSearch 2.9.0 及更新版本实例。如果由 Elasticsearch 7.10.2 或更新版本实例切换到 OpenSearch 2.9.0 或更新版本实例,在使用 Java SDK 连接实例时,需要切换到 OpenSearch 2.9 或更新版本 Java SDK。本文将以 Java High Level REST Client 为例,介绍 SDK 的切换过程。
背景信息
OpenSearch 2.9.0 及更新版本 SDK 基本兼容了 Elasticsearch 7.10.2 及更新版本 x-pack 之外的 API,即兼容了 Elasticsearch 7.10.2 OSS API。用户切换 SDK 正常只需做以下三步改动:
  1. 修改 Maven pom.xml 或者 Gradle build.gradle文件。
  1. 修改源码中的 import 相关包的路径。
  1. 升级 JDK 版本,Elasticsearch 7.10.2 及更新版本 JDK 版本至少 1.8, 而 OpenSearch 2.9.0 及更新版本 JDK 要求版本至少为 11。
环境准备
  1. 准备测试数据。
  • 测试数据来源于 Elasticsearch OSS 代码仓库 accounts.json
  1. 使用下列命令把测试数据索引到 Elasticsearch 实例。
  • 如果需要将数据索引到 OpenSearch 中,导入命令是一致的。
  • curl -k -XPOST -u <user>:<password> -H "Content-Type: application/x-ndjson" https://localhost:9200/accounts/_bulk --data-binary @accounts.json
Elasticsearch SDK
此处主要介绍 Elasticsearch 7.10.2 的 Java High Level REST Client SDK 用法。
  1. build.gradle构建文件中添加 ES SDK 依赖声明。
  • dependencies {
    implementation 'org.elasticsearch.client:elasticsearch-rest-high-level-client:7.10.2'
    ....
    }
  1. 查询用法。
  • import org.apache.http.HttpHost;
    import org.apache.http.auth.AuthScope;
    import org.apache.http.auth.UsernamePasswordCredentials;
    import org.apache.http.client.CredentialsProvider;
    import org.apache.http.conn.ssl.NoopHostnameVerifier;
    import org.apache.http.conn.ssl.TrustAllStrategy;
    import org.apache.http.impl.client.BasicCredentialsProvider;
    import org.apache.http.ssl.SSLContexts;
    import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.index.query.QueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    import javax.net.ssl.SSLContext;
    import java.io.IOException;
    import java.security.KeyManagementException;
    import java.security.KeyStoreException;
    import java.security.NoSuchAlgorithmException;
    public class Main {
    private static RestHighLevelClient client;
    public static void main(String[] args) throws IOException, NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
    initEsClient();
    try {
    QueryBuilder query = QueryBuilders.matchQuery("city", "Vernon");
    SearchSourceBuilder sourceBuilder = new SearchSourceBuilder()
    .size(1000)
    .query(query);
    SearchRequest searchRequest = new SearchRequest()
    .indices("accounts")
    .source(sourceBuilder);
    SearchResponse response = client.search(searchRequest, RequestOptions.DEFAULT);
    System.out.println(response.getHits().getHits()[0].getId());
    } finally {
    client.close();
    }
    }
    private static void initEsClient() throws NoSuchAlgorithmException, KeyStoreException, KeyManagementException {
    // Ignore
    }
    }
说明
上述 Java 代码中的 Ignore 处,需要替换为初始化语句,您可以参考通过 Java 连接 ES 实例
切换到 OpenSearch 2.9.0 SDK
  1. 修改 build.gradle 构建文件中的 SDK 依赖声明,把 Elasticsearch SDK 替换为 OpenSearch 2.9.0 SDK。
  • dependencies {
    implementation 'org.opensearch.client:opensearch-rest-high-level-client:2.9.0'
    ....
    }
  1. 只需要修改源码文件中的 import 相关包的路径,其他地方不需要修改。
  • 原来的 import 语句
    修改后的 import 语句
    import org.elasticsearch.action.search.SearchRequest;
    import org.elasticsearch.action.search.SearchResponse;
    import org.elasticsearch.client.RequestOptions;
    import org.elasticsearch.client.RestClient;
    import org.elasticsearch.client.RestHighLevelClient;
    import org.elasticsearch.index.query.QueryBuilder;
    import org.elasticsearch.index.query.QueryBuilders;
    import org.elasticsearch.search.builder.SearchSourceBuilder;
    import org.opensearch.action.search.SearchRequest;
    import org.opensearch.action.search.SearchResponse;
    import org.opensearch.client.RequestOptions;
    import org.opensearch.client.RestClient;
    import org.opensearch.client.RestHighLevelClient;
    import org.opensearch.index.query.QueryBuilder;
    import org.opensearch.index.query.QueryBuilders;
    import org.opensearch.search.builder.SearchSourceBuilder;
最近更新时间:2026.03.24 11:14:00
这个页面对您有帮助吗?
有用
有用
无用
无用