Elasticsearch multi-get

Elasticsearch multi-get

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:

  1. - 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:

  1. Preferência - Define o nó preferido ou shard.
  2. Tempo real - Se definido como true, a operação é realizada em tempo real.
  3. Atualizar - Força a operação para atualizar os fragmentos de destino antes de buscar os documentos especificados.
  4. Roteamento - Um valor usado para rotear as operações para um fragmento específico.
  5. Store_fields - Recupera os campos de documentos armazenados em um índice em vez do documento.
  6. _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:

  1. 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.
  2. 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!