

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 亚马逊 OpenSearch 服务中的异步搜索
异步搜索

通过异步搜索 Amazon Ser OpenSearch vice，您可以提交在后台执行的搜索查询，监控请求的进度，并在稍后阶段检索结果。您可以在搜索完成之前检索部分结果变得可用时检索这些结果。搜索完成后，保存结果以供日后检索和分析。

异步搜索需要 OpenSearch 1.0 或更高版本，或 Elasticsearch 7.10 或更高版本。

本文档简要概述了异步搜索。它还讨论了在托管的 Amazon S OpenSearch ervice 域而不是开源 OpenSearch 集群中使用异步搜索的局限性。有关异步搜索的完整文档，包括可用设置、权限和完整的 API 参考，请参阅 OpenSearch 文档中的[异步搜索](https://docs.opensearch.org/latest/search-plugins/async/index/)。

## 搜索调用示例


要执行异步搜索，请使用下列格式将 HTTP 请求发送到 `_plugins/_asynchronous_search`：

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

**注意**  
如果您使用的是 Elasticsearch 7.10 而不是某个 OpenSearch 版本，请在所有异步搜索`_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` 的所有请求参数查询。如果您使用的是 Elasticsearch 7.10 而不是某个 OpenSearch 版本，请替换为。`_plugins` `_opendistro`

## 异步搜索权限


支持异步搜索[访问权限的精细控制](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 访问结果。

## 异步搜索设置


OpenSearch 允许您使用 `_cluster/settings` API 更改所有可用的[异步搜索设置](https://docs.opensearch.org/latest/search-plugins/async/settings/)。在 “ 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-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 服务中进行跨集群搜索](cross-cluster-search.md)。

## UltraWarm


使用 UltraWarm 索引进行异步搜索仍然有效。有关更多信息，请参阅 [UltraWarm 亚马逊 OpenSearch 服务的存储空间](ultrawarm.md)。

**注意**  
您可以在中监控异步搜索统计信息 CloudWatch。有关指标的完整列表，请参阅[异步搜索指标](managedomains-cloudwatchmetrics.md#managedomains-cloudwatchmetrics-asynchronous-search)。