すべてのプロダクト
Search
ドキュメントセンター

OpenSearch:バッチクエリ

最終更新日:Dec 28, 2024

このトピックでは、OpenSearch Vector Search Edition インスタンスにアクセスして、Java SDK の非同期クライアントを使用してデータをクエリする方法を示すドキュメント検索デモについて説明します。

サンプルコード

package com.aliyun.ha3engine;

import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;

import com.aliyun.ha3engine.async.AsyncClient;
import com.aliyun.ha3engine.async.models.MultiQueryRequest;
import com.aliyun.ha3engine.async.models.QueryRequest;
import com.aliyun.ha3engine.async.models.SearchResponse;
import com.aliyun.sdk.ha3engine.async.core.AsyncConfigInfoProvider;
import com.aliyun.tea.TeaException;

import darabonba.core.client.ClientOverrideConfiguration;

/**
 * @author alibaba
 */
public class SearchDoc {

    public static void main(String[] args) throws Exception {
        try {
        	// インスタンスのユーザー名とパスワード。ユーザー名とパスワードは、[インスタンスの詳細] ページの [API エンドポイント] セクションで確認できます。
            AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");

            // 非同期クライアントを初期化します。
            AsyncClient client = AsyncClient.builder()
                    .credentialsProvider(provider)
                    .overrideConfiguration(
                            ClientOverrideConfiguration.create()
                                    // インスタンスのパブリックエンドポイント。パブリックエンドポイントは、[インスタンスの詳細] ページの [ネットワーク情報] セクションで確認できます。
                                    .setEndpointOverride("ha-cn-***********.public.ha.aliyuncs.com")
                        			.setProtocol("http")
                    ).build();

            QueryRequest queryRequest = QueryRequest.builder()
                    .indexName("content_vec") // クエリ対象のインデックス名。
                    .namespace("150086193") // クエリ対象のインデックスのネームスペース。
                    .vector(Arrays.asList(0.0001575F, 0.00682848F)) // クエリ対象のベクトル。
                    .build();
            MultiQueryRequest multiQueryRequest = MultiQueryRequest.builder()
                    .tableName("hybrid") // クエリ対象のテーブル名。
                    .topK(10) // 返されるドキュメントの数。
                    .outputFields(Arrays.asList("content", "source", "instance_id")) // 返されるフィールド。
                    .filter("type='TEXT'") // フィルター式。
                    .order("DESC") // 返されるドキュメントのソート順。
                    .queries(Arrays.asList(queryRequest)).build();
            CompletableFuture<SearchResponse> searchResponseCompletableFuture = client.multiQuery(multiQueryRequest);
            String responseBody = searchResponseCompletableFuture.get().getBody();

            System.out.println("result:" + responseBody);

        } catch (ExecutionException | InterruptedException e) {
            System.out.println(e.getMessage());
        } catch (TeaException e) {
            System.out.println(e.getMessage());
            Map<String, Object> abc = e.getData();
            System.out.println(com.aliyun.teautil.Common.toJSONString(abc));
        }
    }
}