Elasticsearch Multi-Get

Elasticsearch Multi Get



Este artigo discutirá sobre como usar a API multi-get do Elasticsearch para buscar vários documentos JSON com base em seus IDs. Além disso, o Elasticsearch permite que você use uma única consulta get para recuperar os documentos dos índices usando apenas os IDs dos documentos.

Vamos explorar.







Sintaxe da solicitação

Veja a seguir a sintaxe da API multi-get do Elasticsearch:



GET /_mget
GET / /_mget

A API multi-get suporta vários índices, o que permite buscar os documentos mesmo que não estejam no mesmo índice.



A solicitação é compatível com os seguintes parâmetros de caminho:





  1. <índice> – O nome do índice do qual recuperar os documentos conforme especificado por seus IDs.

Você também pode especificar os outros parâmetros de consulta conforme mostrado:

  1. Preferência – Define o nó ou fragmento preferido.
  2. Tempo real – Se definido como verdadeiro, a operação é executada em tempo real.
  3. Atualizar – Força a operação a atualizar os estilhaços de destino antes de buscar os documentos especificados.
  4. Roteamento – Um valor que é usado para rotear as operações para um estilhaço específico.
  5. Store_fields – Recupera os campos do documento 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 oferece suporte aos seguintes atributos:
    • _Eu iria – ID exclusivo 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, ele os exclui.
    • _stored_fields – Os campos armazenados que você deseja incluir.
  2. Códigos – Os ids dos documentos que você deseja buscar.

Exemplo 1: buscar vários documentos do mesmo índice

O exemplo a seguir mostra como usar a API multi-get do Elasticsearch para recuperar os documentos com IDs específicos do índice Netflix:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'
{
'documentos': [
{
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_id': 'W3wnVoMBck2AEzXPytlJ'
}
]
}'

A solicitação fornecida deve buscar os documentos com os IDs especificados no índice Netflix. A saída resultante é como mostrado:

{
'documentos': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_versão 1,
'_seq_no': 0,
'_termo_primário': 1,
'encontrado': verdadeiro,
'_fonte': {
'duração': '90 minutos',
'listed_in': 'Documentários',
'país': 'Estados Unidos',
'date_added': '25 de setembro de 2021',
'show_id': 's1',
'diretor': 'Kirsten Johnson',
'lançamento_ano': 2020,
'classificação': 'PG-13',
'description': 'À medida que seu pai se aproxima do fim de sua vida, o cineasta Kirsten Johnson encena sua morte de maneiras inventivas e cômicas para ajudá-los a enfrentar o inevitável.',
'tipo': 'Filme',
'title': 'Dick Johnson Está Morto'
}
},
{
'_index': 'netflix',
'_id': 'W3wnVoMBck2AEzXPytlJ',
'_versão 1,
'_seq_no': 12,
'_termo_primário': 1,
'encontrado': verdadeiro,
'_fonte': {
'país': 'Alemanha, República Tcheca',
'show_id': 's13',
'diretor': 'Christian Schwochow',
'lançamento_ano': 2021,
'classificação': 'TV-MA',
'description': 'Depois que a maioria de sua família é assassinada em um atentado terrorista, uma jovem é inconscientemente atraída para se juntar ao mesmo grupo que os matou.',
'tipo': 'Filme',
'title': 'Eu sou Karl',
'duração': '127 minutos',
'listed_in': 'Dramas, Filmes Internacionais',
'elenco': '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 dos documentos em uma matriz simples, conforme mostrado a seguir:

curl -XGET 'http://localhost:9200/netflix/_mget' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'
{
'ids': ['T3wnVoMBck2AEzXPytlJ', 'W3wnVoMBck2AEzXPytlJ']
}'

A solicitação anterior deve executar uma ação semelhante.

Exemplo 2: buscar os documentos de vários índices

No exemplo a seguir, a solicitação busca vários documentos de diferentes índices, conforme mostrado:

curl -XGET 'http://localhost:9200/_mget' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'
{
'documentos': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ'
},
{
'_index': 'disney',
'_id': '8j4wWoMB1yF5VqfaKCE4'
}
]
}'

A saída resultante é como mostrado:

Exemplo 3: excluir 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: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'
{
'documentos': [
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_source': falso
},
{
'_index': 'netflix',
'_id': 'T3wnVoMBck2AEzXPytlJ',
'_fonte': {
'include': [ 'listed_in', 'release_year', 'title' ],
'exclude': [ 'descrição', 'tipo', 'data_adicionada' ]
}
}
]

}'

A solicitação fornecida usa a inclusão e a exclusão de origem para especificar quais campos você deseja recuperar em um determinado documento.

A saída resultante é como mostrado:

Conclusão

Nesta postagem, discutimos os fundamentos do trabalho com a API multi-get do Elasticsearch, 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.

Boa codificação!