Indicizzazione dei dati in Amazon OpenSearch Service - Amazon OpenSearch Service

Indicizzazione dei dati in Amazon OpenSearch Service

Poiché Amazon OpenSearch Service utilizza un'API REST, esistono numerosi metodi per l'indicizzazione dei documenti. Puoi utilizzare client standard come curl o qualsiasi linguaggio di programmazione in grado di inviare richieste HTTP. Per semplificare ulteriormente il processo di interazione, OpenSearch Service dispone di client per molti linguaggi di programmazione. Gli utenti esperti possono passare direttamente a Firma di richieste HTTP in Amazon OpenSearch Service o a Caricamento dei dati in streaming in Amazon OpenSearch Service.

Per un'introduzione all'indicizzazione, consultare la documentazione di OpenSearch.

Limitazioni di denominazione per gli indici

Gli indici OpenSearch Service hanno le seguenti limitazioni di denominazione:

  • Tutte le lettere devono essere minuscole.

  • I nomi degli indici non possono iniziare con _ o -.

  • I nomi degli indici non possono contenere spazi, virgole, :, ", *, +, /, \, |, ?, #, > o <.

Non includere informazioni sensibili nei nomi di indice, tipo o ID documento. OpenSearch Service utilizza questi nomi negli URI (Uniform Resource Identifier). I server e le applicazioni registrano spesso le richieste HTTP, il che può causare un'inutile esposizione dei dati se gli URI contengono informazioni sensibili.

2018-10-03T23:39:43 198.51.100.14 200 "GET https://opensearch-domain/dr-jane-doe/flu-patients-2018/202-555-0100/ HTTP/1.1"

Anche se non si dispone delle autorizzazioni per visualizzare il documento JSON associato, è possibile dedurre da questa riga fittizia del log che uno dei pazienti del Dr. Doe con numero di telefono 202-555-0100 ha avuto l'influenza nel 2018.

Se OpenSearch Service rileva un indirizzo IP reale o percepito in un nome indice (ad esempio, my-index-12.34.56.78.91), maschera l'indirizzo IP. Una chiamata a _cat/indices produce la risposta seguente:

green open my-index-x.x.x.x soY19tBERoKo71WcEScidw 5 1 0 0 2kb 1kb

Per evitare inutili confusioni, evitare di includere indirizzi IP nei nomi di indice.

Riduzione delle dimensioni della risposta

Le risposte dalle API _index e _bulk contengono diverse informazioni. Queste informazioni possono essere utili per le richieste di risoluzione dei problemi o per l'implementazione della logica dei tentativi, ma possono utilizzare una larghezza di banda considerevole. In questo esempio, l'indicizzazione di un documento a 32 byte genera una risposta a 339 byte (incluse le intestazioni):

PUT opensearch-domain/more-movies/_doc/1 {"title": "Back to the Future"}

Risposta

{ "_index": "more-movies", "_type": "_doc", "_id": "1", "_version": 4, "result": "updated", "_shards": { "total": 2, "successful": 2, "failed": 0 }, "_seq_no": 3, "_primary_term": 1 }

Questa dimensione della risposta potrebbe sembrare minima, ma se si indicizza 1.000.000 di documenti al giorno, circa 11,5 documenti al secondo, 339 byte per risposta sono 10,17 GB di traffico di download al mese.

Se i costi di trasferimento dei dati sono un problema, utilizzare il parametro filter_path per ridurre le dimensioni della risposta di OpenSearch Service, ma fare attenzione a non escludere campi necessari per identificare o riprovare a effettuare le richieste non riuscite. Questi campi possono variare a seconda del client. Il parametro filter_path funziona per tutte le API REST di OpenSearch Service ma è utile soprattutto con le API chiamate di frequente, ad esempio le API _index e _bulk:

PUT opensearch-domain/more-movies/_doc/1?filter_path=result,_shards.total {"title": "Back to the Future"}

Risposta

{ "result": "updated", "_shards": { "total": 2 } }

Invece di includere i campi, puoi escluderli con un prefisso -. filter_path supporta anche i caratteri jolly:

POST opensearch-domain/_bulk?filter_path=-took,-items.index._* { "index": { "_index": "more-movies", "_id": "1" } } {"title": "Back to the Future"} { "index": { "_index": "more-movies", "_id": "2" } } {"title": "Spirited Away"}

Risposta

{ "errors": false, "items": [ { "index": { "result": "updated", "status": 200 } }, { "index": { "result": "updated", "status": 200 } } ] }