Ricerca asincrona per Amazon OpenSearch Service - Amazon OpenSearch Service

Ricerca asincrona per Amazon OpenSearch Service

Con la ricerca asincrona per Amazon OpenSearch Service è possibile inviare una query di ricerca che viene eseguita in background, monitorare lo stato di avanzamento della richiesta e recuperare i risultati in una fase successiva. È possibile recuperare i risultati parziali man mano che diventano disponibili prima del completamento della ricerca. Al termine della ricerca, salvare i risultati per il recupero e l'analisi successivi.

La ricerca asincrona richiede OpenSearch 1.0 o versione successiva oppure Elasticsearch 7.10 o versione successiva. La documentazione completa per la ricerca asincrona, comprese le descrizioni dettagliate delle fasi e dell'API, è disponibile nella documentazione di OpenSearch.

Chiamata di ricerca di esempio

Per eseguire una ricerca asincrona, inviare le richieste HTTP a _plugins/_asynchronous_search utilizzando il seguente formato:

POST opensearch-domain/_plugins/_asynchronous_search
Nota

Se si utilizza Elasticsearch 7.10 invece di una versione OpenSearch, sostituire _plugins con _opendistro in tutte le richieste di ricerca asincrone.

È possibile specificare le seguenti opzioni di ricerca asincrona:

Opzioni Descrizione Valore predefinito Obbligatorio
wait_for_completion_timeout

Specifica il tempo che si prevede di attendere per i risultati. È possibile visualizzare tutti i risultati ottenuti in questo tempo, proprio come in una normale ricerca. È possibile eseguire il polling dei risultati rimanenti in base a un ID. Il valore massimo è 300 secondi.

1 secondo No
keep_on_completion

Specifica se si desidera salvare i risultati nel cluster al termine della ricerca. È possibile esaminare i risultati memorizzati in un secondo momento.

false No
keep_alive

Specifica il tempo in cui il risultato viene salvato nel cluster. Ad esempio, 2d significa che i risultati vengono memorizzati nel cluster per 48 ore. I risultati della ricerca salvati vengono eliminati dopo questo periodo o se la ricerca viene annullata. Si noti che questo tempo include il runtime della query. Se la query impiega più di questo periodo di tempo, il processo la annulla automaticamente.

12 ore No

Richiesta di esempio

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

Sono supportati tutti i parametri della richiesta che si applicano a una query _search standard. Se si utilizza Elasticsearch 7.10 invece di una versione OpenSearch, sostituire _plugins con _opendistro.

Autorizzazioni di ricerca asincrona

La ricerca asincrona supporta il controllo granulare degli accessi. Per informazioni dettagliate sull'uso delle autorizzazioni per adattarle al proprio caso d'uso, consultare Sicurezza asincrona della ricerca.

Per i domini con il controllo granulare degli accessi abilitato, sono necessarie le seguenti autorizzazioni minime per un ruolo:

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

Per i domini con il controllo granulare degli accessi disabilitato, utilizzare l'accesso IAM e la chiave segreta per firmare tutte le richieste. È possibile accedere ai risultati con l'ID di ricerca asincrona.

Impostazioni della ricerca asincrona

OpenSearch consente di modificare tutte le impostazioni di ricerca asincrona disponibili utilizzando l'API _cluster/settings. Su Amazon OpenSearch Service, è possibile modificare solo le seguenti impostazioni:

  • opensearch.asynchronous_search.node_concurrent_running_searches

  • opensearch.asynchronous_search.persist_search_failures

Funzionalità di ricerca tra cluster

È possibile eseguire una ricerca asincrona tra cluster con le seguenti limitazioni minori:

  • È possibile eseguire una ricerca asincrona solo nel dominio di origine.

  • Non è possibile ridurre a icona i round trip di rete come parte di una query di ricerca tra cluster.

Se si imposta una connessione tra domain-a -> domain-b con l'alias di connessione cluster_b e domain-a -> domain-c con l'alias di connessione cluster_c, ricercare in maniera asincrona domain-a, domain-b e domain-c come segue:

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

Risposta

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

Per ulteriori informazioni, consultare Ricerca tra cluster per Amazon OpenSearch Service.

UltraWarm

Le ricerche asincrone con indici UltraWarm continueranno a funzionare. Per ulteriori informazioni, consultare Archiviazione UltraWarm per Amazon OpenSearch Service.

Nota

È possibile monitorare le statistiche di ricerca asincrona in CloudWatch. Per un elenco completo di parametri, consulta Parametri di ricerca asincrona.