

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

# Amazon OpenSearch Service の非同期検索
<a name="asynchronous-search"></a>

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

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

このドキュメントでは、非同期検索の概要を説明します。また、オープンソースの OpenSearch クラスターではなく、マネージド Amazon OpenSearch Service ドメインで非同期検索を使用する制限についても説明します。利用可能な設定、アクセス許可、完全な API リファレンスなど、非同期検索の完全なドキュメントについては、OpenSearch ドキュメントの「[Asynchronous search](https://docs.opensearch.org/latest/search-plugins/async/index/)」を参照してください。

## サンプルの検索コール
<a name="asynchronous-search-sample"></a>

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

```
POST opensearch-domain/_plugins/_asynchronous_search
```

**注記**  
OpenSearch バージョンではなく Elasticsearch 7.10 を使用している場合は、すべての非同期検索リクエストで `_plugins` を `_opendistro` で置き換えます。

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


| オプション | 説明 | デフォルトの値 | 必須 | 
| --- | --- | --- | --- | 
| wait\$1for\$1completion\$1timeout |  結果を待機する予定の時間を指定します。通常の検索と同様に、この時間内に得られるどのような結果も確認できます。ID に基づいて残りの結果をポーリングできます。最大値は 300 秒です。  | 1 秒 | いいえ | 
| keep\$1on\$1completion |  検索の完了後に結果をクラスターに保存するかどうかを指定します。保存された結果は、後で確認できます。  | false | いいえ | 
| keep\$1alive |  結果がクラスターに保存される時間を指定します。例えば、`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` で置き換えます。

## 非同期検索アクセス許可
<a name="asynchronous-search-permissions"></a>

非同期検索は、[きめ細かなアクセスコントロール](fgac.md)をサポートしています。ユースケースに適合する許可のミキシングとマッチングの詳細については、[非同期検索セキュリティ](https://docs.opensearch.org/latest/search-plugins/async/security/)を参照してください。

きめ細かなアクセスコントロールが有効になっているドメインの場合は、ロールに対して以下の最小限の許可が必要です。

```
# 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 を用いて結果にアクセスできます。

## 非同期検索設定
<a name="asynchronous-search-diff"></a>

OpenSearch では、`_cluster/settings` APIを使用して利用可能なすべての[非同期検索設定](https://docs.opensearch.org/latest/search-plugins/async/settings/)を変更できます。OpenSearch Service では、以下の設定のみを変更できます。
+ `plugins.asynchronous_search.node_concurrent_running_searches`
+ `plugins.asynchronous_search.persist_search_failures`

## クラスター間検索
<a name="asynchronous-search-ccs"></a>

クラスター間で非同期検索を実行できますが、次の小さな制限があります。
+ 非同期検索は、ソースドメインでのみ実行できます。
+ クロスクラスター検索クエリの一部としてネットワークラウンドトリップを最小化することはできません。

接続エイリアス `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 のクロスクラスター検索](cross-cluster-search.md)」を参照してください。

## UltraWarm
<a name="asynchronous-search-ultrawarm"></a>

UltraWarm インデックスを用いた非同期検索は引き続き機能します。詳細については、「[Amazon OpenSearch Service の UltraWarm ストレージ](ultrawarm.md)」を参照してください。

**注記**  
CloudWatch で非同期検索統計をモニタリングできます。 メトリクスの一覧については、「[非同期検索メトリクス](managedomains-cloudwatchmetrics.md#managedomains-cloudwatchmetrics-asynchronous-search)」を参照してください。