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