翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon OpenSearch Service の非同期検索
Amazon OpenSearch Service の非同期検索を使用すると、バックグラウンドで実行される検索クエリを送信し、リクエストの進行状況をモニタリングし、後のステージで結果を取得できます。検索が完了する前に部分的な結果が取得できるようになります。検索が終了したら、後で取得および分析できるように結果を保存します。
非同期検索では、OpenSearch 1.0 以降、または Elasticsearch 7.10 以降が必要です。
このドキュメントでは、非同期検索の概要を説明します。また、オープンソースの OpenSearch クラスターではなく、マネージド Amazon OpenSearch Service ドメインで非同期検索を使用する制限についても説明します。利用可能な設定、アクセス許可、完全な API リファレンスなど、非同期検索の完全なドキュメントについては、OpenSearch ドキュメントの「Asynchronous search
サンプルの検索コール
非同期検索を実行するには、以下の形式を使用して HTTP リクエストを _plugins/_asynchronous_search
に送信します。
POST
opensearch-domain
/_plugins/_asynchronous_search
注記
OpenSearch バージョンではなく Elasticsearch 7.10 を使用している場合は、すべての非同期検索リクエストで _plugins
を _opendistro
で置き換えます。
次の非同期検索オプションを指定できます。
オプション | 説明 | デフォルト値 | 必須 |
---|---|---|---|
wait_for_completion_timeout |
結果を待機する予定の時間を指定します。通常の検索と同様に、この時間内に得られるどのような結果も確認できます。ID に基づいて残りの結果をポーリングできます。最大値は 300 秒です。 |
1 秒 |
不可 |
keep_on_completion |
検索の完了後に結果をクラスターに保存するかどうかを指定します。保存された結果は、後で確認できます。 |
false |
不可 |
keep_alive |
結果がクラスターに保存される時間を指定します。例えば、 |
12 時間 |
不可 |
リクエスト例
POST _plugins/_asynchronous_search/?pretty&size=10&wait_for_completion_timeout=1ms&keep_on_completion=true&request_cache=false { "aggs": { "city": { "terms": { "field": "city", "size": 10 } } } }
注記
標準 _search
クエリに適用されるすべてのリクエストパラメータがサポートされています。OpenSearch バージョンではなく Elasticsearch 7.10 を使用している場合は、_plugins
を _opendistro
で置き換えます。
非同期検索アクセス許可
非同期検索は、きめ細かなアクセスコントロールをサポートしています。ユースケースに適合する許可のミキシングとマッチングの詳細については、非同期検索セキュリティ
きめ細かなアクセスコントロールが有効になっているドメインの場合は、ロールに対して以下の最小限の許可が必要です。
# Allows users to use all asynchronous search functionality asynchronous_search_full_access: reserved: true cluster_permissions: - 'cluster:admin/opensearch/asynchronous-search/*' index_permissions: - index_patterns: - '*' allowed_actions: - 'indices:data/read/search*' # Allows users to read stored asynchronous search results asynchronous_search_read_access: reserved: true cluster_permissions: - 'cluster:admin/opensearch/asynchronous-search/get'
きめ細かなアクセスコントロールが無効になっているドメインの場合は、IAM アクセスとシークレットキーを使用してすべてのリクエストに署名します。非同期検索 ID を用いて結果にアクセスできます。
非同期検索設定
OpenSearch では、_cluster/settings
APIを使用して利用可能なすべての非同期検索設定
-
plugins.asynchronous_search.node_concurrent_running_searches
-
plugins.asynchronous_search.persist_search_failures
クラスター間検索
クラスター間で非同期検索を実行できますが、次の小さな制限があります。
-
非同期検索は、ソースドメインでのみ実行できます。
-
クロスクラスター検索クエリの一部としてネットワークラウンドトリップを最小化することはできません。
接続エイリアス cluster_b
を用いた domain-a -> domain-b
と接続エイリアス cluster_c
を用いた domain-a -> domain-c
の間の接続をセットアップする場合は、次のように domain-a
、domain-b
、および domain-c
を非同期検索します。
POST https://src-domain.us-east-1.es.amazonaws.com/local_index,cluster_b:b_index,cluster_c:c_index/_plugins/_asynchronous_search/?pretty&size=10&wait_for_completion_timeout=500ms&keep_on_completion=true&request_cache=false { "size": 0, "_source": { "excludes": [] }, "aggs": { "2": { "terms": { "field": "clientip", "size": 50, "order": { "_count": "desc" } } } }, "stored_fields": [ "*" ], "script_fields": {}, "docvalue_fields": [ "@timestamp" ], "query": { "bool": { "must": [ { "query_string": { "query": "status:404", "analyze_wildcard": true, "default_field": "*" } }, { "range": { "@timestamp": { "gte": 1483747200000, "lte": 1488326400000, "format": "epoch_millis" } } } ], "filter": [], "should": [], "must_not": [] } } }
レスポンス
{ "id" : "Fm9pYzJyVG91U19xb0hIQUJnMHJfRFEAAAAAAAknghQ1OWVBczNZQjVEa2dMYTBXaTdEagAAAAAAAAAB", "state" : "RUNNING", "start_time_in_millis" : 1609329314796, "expiration_time_in_millis" : 1609761314796 }
詳細については、「Amazon OpenSearch Service のクロスクラスター検索」を参照してください。
UltraWarm
UltraWarm インデックスを用いた非同期検索は引き続き機能します。詳細については、「UltraWarm Amazon OpenSearch Service の ストレージ」を参照してください。
注記
CloudWatch で非同期検索統計をモニタリングできます。 メトリクスの一覧については、「非同期検索メトリクス」を参照してください。