Amazon OpenSearch Service での非同期検索 - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon OpenSearch Service での非同期検索

Amazon OpenSearch Service の非同期検索を使用すると、バックグラウンドで実行される検索クエリを送信し、リクエストの進行状況をモニタリングして、後の段階で結果を取得できます。検索が完了する前に部分的な結果が取得できるようになります。検索が終了したら、後で取得および分析できるように結果を保存します。

非同期検索には OpenSearch 1.0 以降、または Elasticsearch 7.10 以降が必要です。

このドキュメントでは、非同期検索の概要を説明します。また、オープンソース OpenSearch クラスターではなくマネージド Amazon OpenSearch Service ドメインで非同期検索を使用する際の制限についても説明します。使用可能な設定、アクセス許可、完全な API リファレンスなど、非同期検索の完全なドキュメントについては、 OpenSearch ドキュメントの「非同期検索」を参照してください。

サンプルの検索コール

非同期検索を実行するには、以下の形式を使用して HTTP リクエストを _plugins/_asynchronous_search に送信します。

POST opensearch-domain/_plugins/_asynchronous_search
注記

OpenSearch バージョンの代わりに Elasticsearch 7.10 を使用している場合は、すべての非同期検索リクエスト_opendistro_plugins を に置き換えます。

次の非同期検索オプションを指定できます。

オプション 説明 デフォルト値 必須
wait_for_completion_timeout

結果を待機する予定の時間を指定します。通常の検索と同様に、この時間内に得られるどのような結果も確認できます。ID に基づいて残りの結果をポーリングできます。最大値は 300 秒です。

1 いいえ
keep_on_completion

検索の完了後に結果をクラスターに保存するかどうかを指定します。保存された結果は、後で確認できます。

false いいえ
keep_alive

結果がクラスターに保存される時間を指定します。例えば、2d は、結果が 48 時間クラスターに保存されることを意味します。保存された検索結果は、この期間の後、または検索がキャンセルされた場合、削除されます。これにはクエリランタイムが含まれることに注意してください。この時間にクエリがオーバーランすると、プロセスではこのクエリが自動的にキャンセルされます。

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 を使用して、使用可能なすべての非同期検索設定を変更できます。 OpenSearch サービスでは、次の設定のみ変更できます。

  • 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-adomain-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 サービス用ストレージ」を参照してください。

注記

で非同期検索統計をモニタリングできます CloudWatch。メトリクスの一覧については、「非同期検索メトリクス」を参照してください。