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