

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# 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) 섹션을 참조하세요.