Este artigo discutirá sobre como usar a API Multi-Get Elasticsearch para buscar vários documentos JSON com base em seus IDs. Além disso, o Elasticsearch permite que você use uma única consulta para recuperar os documentos dos índices usando apenas os IDs de documentos.
Vamos explorar.
Solicitar sintaxe
A seguir, a sintaxe da API Elasticsearch Multi-Get:
Obtenha /_mget
Get // _ MGET
A API multi-get suporta vários índices que permitem buscar os documentos, mesmo que eles não estejam no mesmo índice.
A solicitação suporta os seguintes parâmetros do caminho:
- - O nome do índice para recuperar os documentos, conforme especificado por seus IDs.
Você também pode especificar os outros parâmetros de consulta, como mostrado:
- Preferência - Define o nó preferido ou shard.
- Tempo real - Se definido como true, a operação é realizada em tempo real.
- Atualizar - Força a operação para atualizar os fragmentos de destino antes de buscar os documentos especificados.
- Roteamento - Um valor usado para rotear as operações para um fragmento específico.
- Store_fields - Recupera os campos de documentos armazenados em um índice em vez do documento.
- _fonte - Um valor booleano que define se a solicitação deve retornar o campo _source ou não.
A consulta requer o corpo, que inclui os seguintes valores:
- Documentos - Especifica os documentos que você deseja buscar. Além disso, esta seção suporta os seguintes atributos:
- _eu ia - ID único do documento de destino.
- _índice - O índice que contém o documento de destino.
- Roteamento - A chave para o fragmento principal do documento.
- _fonte - Se verdadeiro, inclui todos os campos de origem; Caso contrário, os exclui.
- _stored_fields - Os Stored_fields que você deseja incluir.
- Ids - Os IDs dos documentos que você deseja buscar.
Exemplo 1: busque vários documentos do mesmo índice
O exemplo a seguir mostra como usar a API Multi-GET Elasticsearch para recuperar os documentos com IDs específicos do índice da Netflix:
Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: reporting" -h "content -type: aplicativo/json" -d '
"Docs": [
"_id": "T3WNVombck2aezxpytlj"
,
"_id": "w3wnvombck2aezxpytlj"
]
'
A solicitação fornecida deve buscar os documentos com os IDs especificados do índice da Netflix. A saída resultante é como mostrado:
"Docs": [
"_index": "Netflix",
"_id": "T3WNVombck2aezxpytlj",
"_versão 1,
"_seq_no": 0,
"_Primary_term": 1,
"Found": verdadeiro,
"_fonte":
"Duração": "90 min",
"Listed_in": "Documentários",
"país": "Estados Unidos",
"date_added": "25 de setembro de 2021",
"show_id": "s1",
"Diretor": "Kirsten Johnson",
"Release_year": 2020,
"Classificação": "PG-13",
"Descrição": "Quando seu pai se aproxima do final de sua vida, o cineasta Kirsten Johnson agarra sua morte de maneiras inventivas e cômicas para ajudá -los a enfrentar o inevitável.",
"Tipo": "filme",
"Título": "Dick Johnson está morto"
,
"_index": "Netflix",
"_id": "w3wnvombck2aezxpytlj",
"_versão 1,
"_seq_no": 12,
"_Primary_term": 1,
"Found": verdadeiro,
"_fonte":
"Country": "Alemanha, República Tcheca",
"Show_id": "S13",
"Diretor": "Christian Schwochow",
"Release_year": 2021,
"Classificação": "tv-ma",
"Descrição": "Depois que a maioria de sua família é assassinada em um atentado terrorista, uma jovem é desconhecida para se juntar ao próprio grupo que os matou.",
"Tipo": "filme",
"Título": "Je Suis Karl",
"Duração": "127 min",
"Listed_in": "Dramas, filmes internacionais",
"Cast": "Luna Wedler, Jannis Niewöhner, Milan Peschel, Edin Hasanović, Anna Fialová, Marlon Boess, Victor Boccard, Fleur Geffrier, Aziz Dyab, Mélanie Fouché, Elizaveta Maximová",
"Date_added": "23 de setembro de 2021"
]
Também podemos simplificar a solicitação colocando os IDs de documentos em uma matriz simples, como mostrado no seguinte:
Curl -xget "http: // localhost: 9200/netflix/_mget" -h "kbn -xsrf: reporting" -h "content -type: aplicativo/json" -d '
"IDS": ["T3WNVombck2aezxpytlj", "w3wnvombck2aezxpytlj"]
'
O pedido anterior deve executar uma ação semelhante.
Exemplo 2: busque os documentos de vários indicios
No exemplo a seguir, a solicitação busca vários documentos de diferentes índices, como mostrado:
Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: reporting" -h "content -type: Application/json" -d '
"Docs": [
"_index": "Netflix",
"_id": "T3WNVombck2aezxpytlj"
,
"_index": "Disney",
"_id": "8J4wwomb1yf5vqfakce4"
]
'
A saída resultante é como mostrado:
Exemplo 3: exclua campos específicos
Podemos excluir campos específicos de uma determinada solicitação usando os parâmetros Source_include e Source_Exclude.
Um exemplo é como mostrado:
Curl -xget "http: // localhost: 9200/_mget" -h "kbn -xsrf: reporting" -h "content -type: Application/json" -d '
"Docs": [
"_index": "Netflix",
"_id": "T3WNVombck2aezxpytlj",
"_source": false
,
"_index": "Netflix",
"_id": "T3WNVombck2aezxpytlj",
"_fonte":
"Incluir": ["Listed_in", "Release_year", "Title"],
"exclui": ["Descrição", "Tipo", "Date_added"]
]
'
A solicitação fornecida usa a fonte incluir e excluir para especificar quais campos você deseja recuperar em um determinado documento.
A saída resultante é como mostrado:
Conclusão
Neste post, discutimos os fundamentos de trabalhar com a API Elasticsearch Multi-Get, que permite buscar vários documentos de várias fontes com base em seus IDs. Sinta -se à vontade para explorar os outros documentos para obter mais informações.
Codificação feliz!