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á.
Tutorial: Criar e pesquisar documentos no Amazon OpenSearch Service
Neste tutorial, você aprenderá a criar e pesquisar um documento no Amazon OpenSearch Service. Você adiciona dados a um índice na forma de um documento JSON. O OpenSearch Service cria um índice em torno do primeiro documento que você adiciona.
Este tutorial explica como fazer solicitações HTTP para criar documentos, gerar automaticamente um ID para um documento e realizar pesquisas básicas e avançadas em seus documentos.
nota
Este tutorial usa um domínio com acesso aberto. Para obter o mais alto nível de segurança, recomendamos colocar o domínio em uma nuvem privada virtual (VPC).
Pré-requisitos
Este tutorial tem os seguintes pré-requisitos:
-
É necessário ter uma Conta da AWS.
-
É necessário ter um domínio ativo do OpenSearch Service.
Adicionar um documento a um índice
Para adicionar um documento a um índice, é possível usar qualquer ferramenta HTTP, como oPostman
Para adicionar um documento a um índice
-
Acesse o URL do OpenSearch Dashboards para seu domínio. O URL está disponível no painel do domínio no console do OpenSearch Service. O URL segue este formato:
domain-endpoint
/_dashboards/ -
Entre usando o nome de usuário principal e a senha.
-
Abra o painel de navegação esquerdo e escolha Ferramentas de desenvolvimento.
-
O verbo HTTP para criar um novo recurso é PUT. É ele que deve ser usado para criar um novo documento e um índice. Insira o seguinte comando no console:
PUT fruit/_doc/1 { "name":"strawberry", "color":"red" }
A solicitação
PUT
cria um índice chamado fruit e adiciona um único documento ao índice com um ID de 1. Ele produz a seguinte resposta:{ "_index" : "fruit", "_type" : "_doc", "_id" : "1", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
Criar IDs gerados automaticamente
O OpenSearch Service pode gerar automaticamente um ID para seus documentos. O comando de geração de IDs usa uma solicitação POST em vez de uma solicitação PUT e não requer nenhum ID de documento (em comparação com a solicitação anterior).
Insira a seguinte solicitação no console do desenvolvedor:
POST veggies/_doc { "name":"beet", "color":"red", "classification":"root" }
Essa solicitação cria um índice chamado veggies e adiciona o documento ao índice. Ele produz a seguinte resposta:
{ "_index" : "veggies", "_type" : "_doc", "_id" : "3WgyS4IB5DLqbRIvLxtF", "_version" : 1, "result" : "created", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 0, "_primary_term" : 1 }
Observe o campo _id
adicional na resposta, que indica que um ID foi criado automaticamente.
nota
Você não acrescenta nada depois de _doc
no URL, onde o ID normalmente é adicionado. Como está criando um documento com um ID gerado, você ainda não fornece um. Isso está reservado para atualizações.
Atualizar um documento com um comando POST
Para atualizar um documento, use um comando HTTP POST
com o número do ID.
Primeiro, crie um documento com ID 42
:
POST fruits/_doc/42 { "name":"banana", "color":"yellow" }
Em seguida, use esse ID para atualizar o documento:
POST fruits/_doc/42 { "name":"banana", "color":"yellow", "classification":"berries" }
Esse comando atualiza o documento com o novo campo classification
. Ele produz a seguinte resposta:
{ "_index" : "fruits", "_type" : "_doc", "_id" : "42", "_version" : 2, "result" : "updated", "_shards" : { "total" : 2, "successful" : 2, "failed" : 0 }, "_seq_no" : 1, "_primary_term" : 1 }
nota
Se você tentar atualizar um documento que não existe, o OpenSearch Service criará o documento.
Executar ações em massa
Você pode usar a operação da API POST _bulk
para executar várias ações em um ou mais índices em uma solicitação. Os comandos de ação em massa têm o seguinte formato:
POST /_bulk <action_meta>\n <action_data>\n <action_meta>\n <action_data>\n
Cada ação requer duas linhas de JSON. Primeiro, é necessário fornecer a descrição ou os metadados da ação. Na próxima linha, você deve fornecer os dados. Cada parte é separada por uma nova linha (\n). Uma descrição de ação de uma inserção pode ser semelhante a esta:
{ "create" : { "_index" : "veggies", "_type" : "_doc", "_id" : "7" } }
E a próxima linha contendo os dados pode ter a seguinte aparência:
{ "name":"kale", "color":"green", "classification":"leafy-green" }
Juntos, os metadados e os dados representam uma única ação em uma operação em massa. Você pode realizar várias operações em uma solicitação, como esta:
POST /_bulk { "create" : { "_index" : "veggies", "_id" : "35" } } { "name":"kale", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "36" } } { "name":"spinach", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "37" } } { "name":"arugula", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "38" } } { "name":"endive", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "39" } } { "name":"lettuce", "color":"green", "classification":"leafy-green" } { "delete" : { "_index" : "vegetables", "_id" : "1" } }
Observe que a última ação é delete
. Não há dados seguindo a ação delete
.
Pesquisando documentos
Agora que os dados existem no seu cluster, você pode procurá-los. Por exemplo, talvez você queira pesquisar todos os tubérculos ou obter uma contagem de todas as folhas verdes ou encontrar o número de erros registrados por hora.
Pesquisas básicas
Uma pesquisa básica é semelhante a esta:
GET veggies/_search?q=name:l*
A solicitação produz uma resposta JSON que contém o documento lettuce.
Pesquisas avançadas
É possível realizar pesquisas mais avançadas fornecendo as opções de consulta como JSON no corpo da solicitação:
GET veggies/_search { "query": { "term": { "name": "lettuce" } } }
Este exemplo também produz uma resposta JSON com o documento lettuce.
Classificar
É possível executar mais desse tipo de consulta usando a classificação. Primeiro, é necessário recriar o índice, porque o mapeamento automático de campo escolheu tipos que não podem ser classificados por padrão. Envie as seguintes solicitações para excluir e recriar o índice:
DELETE /veggies PUT /veggies { "mappings":{ "properties":{ "name":{ "type":"keyword" }, "color":{ "type":"keyword" }, "classification":{ "type":"keyword" } } } }
Em seguida, preencha novamente o índice com dados:
POST /_bulk { "create" : { "_index" : "veggies", "_id" : "7" } } { "name":"kale", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "8" } } { "name":"spinach", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "9" } } { "name":"arugula", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "10" } } { "name":"endive", "color":"green", "classification":"leafy-green" } { "create" : { "_index" : "veggies", "_id" : "11" } } { "name":"lettuce", "color":"green", "classification":"leafy-green" }
Agora você pode pesquisar com uma classificação. Esta solicitação adiciona uma classificação crescente:
GET veggies/_search { "query" : { "term": { "color": "green" } }, "sort" : [ "classification" ] }
Recursos relacionados
Para obter mais informações, consulte os seguintes recursos do :