Como fazer uma consulta de Elasticsearch aninhada

Como fazer uma consulta de Elasticsearch aninhada
Você pode realizar uma consulta aninhada no Elasticsearch usando o parâmetro aninhado. Uma consulta aninhada pesquisará os objetos de campo aninhados e devolverá o pai root do documento se houver um objeto correspondente.

Como usar uma consulta aninhada

Para executar uma consulta aninhada, você deve ter um índice que inclua um mapeamento aninhado.

A consulta a seguir cria um índice com um mapeamento de campo aninhado.

Coloque o índice aninhado

"Mapeamentos":
"Propriedades":
"clientes":
"Tipo": "aninhado"



Em seguida, crie um documento contendo tipos de campo aninhados e alguns dados, como mostrado na consulta de amostra abaixo:

Coloque o aninhado-index/_doc/1

"Categoria": "Electronic_purchases",
"clientes": [

"First_name": "Barbra",
"Last_name": "Walker"
,

"First_name": "Michael",
"Last_name": "Jean"
,

"First_name": "Hannah",
"Last_name": "Newsome"

]

Para executar uma consulta aninhada, podemos executar um exemplo como o mostrado abaixo:

Obtenha-se-índice aninhado/_search

"consulta":
"aninhado":
"Caminho": "clientes",
"consulta":
"bool":
"deve": [
"corresponder":
"clientes.primeiro_name ":" Hannah "


]

,
"Inner_hits": "Highlight": "Fields": "clientes.primeiro nome":


Um exemplo de resposta da consulta acima está abaixo:

A consulta aninhada usa parâmetros como:

  1. Caminho - O parâmetro do caminho define o caminho para o objeto aninhado sob o qual realizar a consulta de pesquisa. Este parâmetro é necessário.
  2. Consulta - Este parâmetro define a consulta de pesquisa para executar no caminho aninhado fornecido. Semelhante ao parâmetro do caminho, o parâmetro de consulta é não opcional.
  3. Bool - A consulta booleana garante que os documentos correspondam à condição especificada. Quando você tem a consulta booleana definida, a cláusula definida deve estar no registro correspondente. Considere a documentação sobre a consulta booleana para saber mais.
  4. Inner_hits - Isso retorna por pesquisa atingido na resposta da resposta aninhada. Ele aceita opções como destaque seguido pelo campo para destacar.

Consultas aninhadas de vários níveis

Você também pode ter consultas aninhadas de vários níveis, como mostrado no exemplo de índice:

Put /usuários

"Mapeamentos":
"Propriedades":
"nome de usuário":
"Tipo": "aninhado",
"Propriedades":
"primeiro nome":
"Tipo": "texto"
,
"e-mail":
"Tipo": "aninhado",
"Propriedades":
"fornecedor":
"Tipo": "texto"
,
"Prefixo":
"Tipo": "texto"







Adicione alguns documentos com os dados como:

Put/usuários/_doc/1

"nome de usuário":
"First_name": "David",
"e-mail": [

"Provedor": "Gmail.com ",
"Prefixo": "David123@"
,

"Provedor": "Hotmail.com ",
"Prefixo": "Davidy123@"

]


Put/usuários/_doc/2

"nome de usuário":
"First_name": "Lucy",
"e-mail": [

"Provedor": "Outlook.com ",
"Prefixo": "LUCYMAIL@"
,

"Provedor": "Protonmail.com ",
"Prefixo": "Lucyp@"

]

Para realizar uma consulta aninhada de vários níveis, execute a solicitação como:

Get /usuários /_search

"consulta":
"aninhado":
"Caminho": "Nome de usuário",
"consulta":
"aninhado":
"Path": "Nome de usuário.e-mail",
"consulta":
"bool":
"deve": [
"corresponder":
"nome de usuário.e-mail.provedor ":" gmail.com "

]






Um exemplo da resposta da consulta resultante está abaixo:

Para encerrar

Este guia discute como executar consultas aninhadas aninhadas e de vários níveis no Elasticsearch.