Indexação de dados no Amazon OpenSearch Service - Amazon OpenSearch Service

Indexação de dados no Amazon OpenSearch Service

Como o Amazon OpenSearch Service usa uma API REST, existem vários métodos para indexar documentos. Você pode usar os clientes padrão, como curl, ou qualquer linguagem de programação que possa enviar solicitações HTTP. Para simplificar ainda mais o processo de interação, o OpenSearch Service tem clientes para várias linguagens de programação. Os usuários avançados podem avançar diretamente para Assinatura de solicitações HTTP no Amazon OpenSearch Service ou Carregamento de dados de streaming no Amazon OpenSearch Service.

Para obter uma introdução à indexação, consulte a documentação OpenSearch.

Restrições de nomenclatura para índices

Os índices do OpenSearch Service têm as seguintes restrições de nomenclatura:

  • Todas as letras devem estar em minúscula.

  • Os nomes de índice não podem começar com _ ou -.

  • Os nomes de índice não podem conter espaços, vírgulas, :, ", *, +, /, \, |, ?, #, > ou <.

Não inclua informações sigilosas nos nomes de índice, tipos ou IDs de documentos. O OpenSearch Service usa esses nomes em seus identificadores de recursos uniformes (URIs). Servidores e aplicativos geralmente registram solicitações de HTTP, o que poderá levar à exposição desnecessária de dados se os URIs contiverem informações confidenciais.

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"

Mesmo se não tivesse permissões para visualizar o documento JSON associado, você poderia inferir por essa linha de registro falsa que um dos pacientes do Dr. Doe cujo número de telefone é 202-555-0100 contraiu gripe em 2018.

Se o OpenSearch Service detectar um endereço IP real ou aparente em um nome de índice (por exemplo, my-index-12.34.56.78.91), ele vai mascarar o endereço IP. Uma chamada para _cat/indices produz a seguinte resposta:

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

Para evitar confusões desnecessárias, evite incluir endereços IP em nomes de índices.

Redução do tamanho da resposta

As respostas das APIs _index e _bulk contêm um pouco de informações. Essas informações podem ser úteis para solução de problemas de solicitações ou para implementar a lógica de tentativas repetidas, mas pode usar consideravelmente a banda larga. Neste exemplo, indexar um documento de 32 bytes resulta em uma resposta de 339 bytes (incluindo cabeçalhos):

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

Resposta

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

Esse tamanho de resposta pode parecer insignificante, mas se você indexar 1.000.000 documentos por dia — aproximadamente 11,5 documentos por segundo —, 339 bytes por resposta representam 10,17 GB de tráfego de download por mês.

Se os custos de transferência de dados forem uma preocupação, use o parâmetro filter_path para reduzir o tamanho da resposta do OpenSearch Service, mas tenha cuidado para não filtrar campos que você precisa para identificar ou realizar novas tentativas de solicitações com falha. Esses campos variam de acordo com o cliente. O parâmetro filter_path funciona para todas as APIs REST do OpenSearch Service, mas é especialmente útil com APIs que você chama com frequência, como as APIs _index e _bulk:

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

Resposta

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

Em vez de incluir campos, você pode excluir campos com um prefixo -. filter_path também oferece suporte a curingas:

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

Resposta

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