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

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Indexação de dados no Amazon Elasticsearch Service

Como o Elasticsearch 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 Elasticsearch tem clientes para várias linguagens de programação. Os usuários avançados podem avançar diretamente para Assinar solicitações de HTTP para o Amazon Elasticsearch Service ou Carregamento de dados de streaming no Amazon Elasticsearch Service.

Para obter uma introdução à indexação, consulte a documentação Open Distro for Elasticsearch.

Nomeação de restrições para índices

Os índices do Elasticsearch têm as seguintes restrições de denominação:

  • 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 confidenciais nos nomes de índice, tipo ou ID do documento. O Elasticsearch 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://elasticsearch_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 com um número de telefone (202) 555-0100 ficou gripado em 2018.

Redução do tamanho de 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 elasticsearch_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 pequeno, mas se você indexar 1.000.000 documentos por dia—aproximadamente 11,5 documentos por segundo—339 bytes por resposta funcionam para 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 Elasticsearch, 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 Elasticsearch, mas é especialmente útil com APIs que você chama com frequência, como as APIs _bulk e _index:

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