

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Recherche asynchrone dans Amazon Service OpenSearch
<a name="asynchronous-search"></a>

Avec la recherche asynchrone pour Amazon OpenSearch Service, vous pouvez envoyer une requête de recherche exécutée en arrière-plan, suivre la progression de la demande et récupérer les résultats ultérieurement. Vous pourrez récupérer des résultats partiels avant la fin de la recherche dès que ceux-ci seront disponibles. Au terme de la recherche, enregistrez les résultats pour les récupérer et les analyser ultérieurement.

La recherche asynchrone nécessite la OpenSearch version 1.0 ou ultérieure, ou Elasticsearch 7.10 ou une version ultérieure. 

Cette documentation fournit un bref aperçu de la recherche asynchrone. Il décrit également les limites de l'utilisation de la recherche asynchrone avec un domaine Amazon OpenSearch Service géré plutôt qu'un cluster open source OpenSearch . Pour une documentation complète sur la recherche asynchrone, y compris les paramètres disponibles, les autorisations et une référence d'API complète, consultez la section [Recherche asynchrone](https://docs.opensearch.org/latest/search-plugins/async/index/) dans la documentation. OpenSearch 

## Exemple d'appel de recherche
<a name="asynchronous-search-sample"></a>

Pour effectuer une recherche asynchrone, envoyez des demandes HTTP à `_plugins/_asynchronous_search` en utilisant le format suivant :

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

**Note**  
Si vous utilisez Elasticsearch 7.10 au lieu d'une OpenSearch version, remplacez par `_opendistro` dans toutes les demandes `_plugins` de recherche asynchrones.

Vous pouvez spécifier les options de recherche asynchrone suivantes :


| Options | Description | Valeur par défaut | Obligatoire | 
| --- | --- | --- | --- | 
| wait\$1for\$1completion\$1timeout |  Spécifie le délai d'attente des résultats. Vous pouvez voir tous les résultats obtenus au cours de cette période, comme pour une recherche normale. Vous pouvez interroger les résultats restants à partir d'un ID. La valeur maximale est de 300 secondes.  | 1 seconde | Non | 
| keep\$1on\$1completion |  Indique si vous souhaitez enregistrer les résultats dans le cluster une fois la recherche terminée. Vous pourrez examiner les résultats enregistrés ultérieurement.  | false | Non | 
| keep\$1alive |  Spécifie la durée pendant laquelle le résultat est conservé dans le cluster. Par exemple, `2d` signifie que les résultats sont stockés dans le cluster pendant 48 heures. Passé ce délai, ou en cas d'annulation de la recherche, les résultats enregistrés sont supprimés. Notez que cela inclut l'exécution de la requête. En cas de dépassement de ce délai, le processus annule automatiquement cette requête.  | 12 heures | Non | 

**Exemple de demande**

```
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
      }
    }
  }
}
```

**Note**  
Tous les paramètres de demande qui s'appliquent à une requête `_search` standard sont pris en charge. Si vous utilisez Elasticsearch 7.10 au lieu d'une OpenSearch version, remplacez-la par. `_plugins` `_opendistro`

## Autorisations relatives à la recherche asynchrone
<a name="asynchronous-search-permissions"></a>

La recherche asynchrone prend en charge le [contrôle précis des accès](fgac.md). Pour savoir comment panacher les autorisations et les adapter à votre cas d'utilisation, consultez [Sécurité liée à la recherche asynchrone](https://docs.opensearch.org/latest/search-plugins/async/security/).

Pour les domaines où le contrôle précis des accès est activé, vous devez disposer des autorisations minimales suivantes pour un rôle : 

```
# 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'
```

Pour les domaines où le contrôle précis des accès est désactivé, utilisez votre accès IAM et votre clé secrète pour signer toutes les demandes. Vous pouvez accéder aux résultats à l'aide de l'ID de recherche asynchrone. 

## Paramètres de recherche asynchrone
<a name="asynchronous-search-diff"></a>

OpenSearch vous permet de modifier tous les [paramètres de recherche asynchrone](https://docs.opensearch.org/latest/search-plugins/async/settings/) disponibles à l'aide de l'`_cluster/settings`API. Dans OpenSearch Service, vous ne pouvez modifier que les paramètres suivants : 
+ `plugins.asynchronous_search.node_concurrent_running_searches`
+ `plugins.asynchronous_search.persist_search_failures`

## Recherche croisée entre clusters
<a name="asynchronous-search-ccs"></a>

Vous pouvez effectuer une recherche asynchrone dans différents clusters avec les limitations mineures suivantes :
+ Vous ne pouvez exécuter une recherche asynchrone que sur le domaine source.
+ Vous ne pouvez pas minimiser les allers-retours réseau dans le cadre d'une requête de recherche croisée entre clusters.

Si vous configurez une connexion entre `domain-a -> domain-b` avec alias de connexion `cluster_b` et `domain-a -> domain-c` avec alias de connexion `cluster_c`, recherchez de manière asynchrone `domain-a`, `domain-b` et `domain-c` comme suit :

```
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": []
    }
  }
}
```

**Réponse**

```
{
  "id" : "Fm9pYzJyVG91U19xb0hIQUJnMHJfRFEAAAAAAAknghQ1OWVBczNZQjVEa2dMYTBXaTdEagAAAAAAAAAB",
  "state" : "RUNNING",
  "start_time_in_millis" : 1609329314796,
  "expiration_time_in_millis" : 1609761314796
}
```

Pour de plus amples informations, veuillez consulter [Recherche entre clusters dans Amazon Service OpenSearch](cross-cluster-search.md).

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

Les recherches asynchrones avec UltraWarm index continuent de fonctionner. Pour de plus amples informations, veuillez consulter [UltraWarm stockage pour Amazon OpenSearch Service](ultrawarm.md).

**Note**  
Vous pouvez surveiller les statistiques de recherche asynchrones dans. CloudWatch Pour accéder à une liste complète des métriques , veuillez consulter [Métriques de recherche asynchrone](managedomains-cloudwatchmetrics.md#managedomains-cloudwatchmetrics-asynchronous-search).