O Elasticsearch retornará por padrão todos os campos em um documento ao realizar uma consulta de pesquisa. Isso é definido pelo parâmetro _source, que contém todos os dados armazenados no registro durante a indexação.
curl -XGET 'http://localhost:9200/netflix/_doc/HXYz_IIBLbuC0z3qKeN2?pretty' -H 'kbn-xsrf: relatórios'Resultado:
No entanto, talvez você não queira recuperar todos os campos de um determinado documento. Neste tutorial, você aprenderá como selecionar campos específicos de um documento.
Opção de campos do Elasticsearch
O parâmetro fields nos permite recuperar campos específicos em uma solicitação de pesquisa. Além disso, o parâmetro field nos permitirá buscar um ou vários campos. Você também pode formatar datas e tipos de dados espaciais usando o parâmetro fields.
Por exemplo, suponha que queremos recuperar os campos index, id, title, release_year, listado em, duração e classificação do índice Netflix, podemos executar uma consulta conforme mostrado abaixo:
curl -XGET 'http://localhost/netflix/_search' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'
{
'consulta': {
'Combine': {
'_id': 'HXYz_IIBLbuC0z3qKeN2'
}
},
'Campos': [
'índice',
'Eu iria',
'título',
'ano de lançamento',
'listados em',
'duração',
'Avaliação'
],
'_source': falso
}'
Na solicitação acima, usamos a API de pesquisa para pesquisar o documento com o id especificado no parâmetro de correspondência.
Em seguida, usamos o parâmetro fields para buscar os campos específicos do documento de destino.
Observe que o Elasticsearch incluirá por padrão o parâmetro _source, que consiste em todos os campos do documento. Para garantir que buscamos apenas os campos especificados, desativamos o parâmetro _source:
A solicitação acima deve retornar uma resposta conforme mostrado:
{'tomou': 1,
'timed_out': falso,
'_shards': {
'total': 1,
'bem sucedido': 1,
'pulado': 0,
'falhou': 0
},
'exitos': {
'total': {
'valor': 1,
'relação': 'eq'
},
'max_score': 1,
'exitos': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'Campos': {
'listados em': [
'Documentários'
],
'duração': [
'90 minutos'
],
'ano de lançamento': [
2020
],
'Avaliação': [
'PG-13'
],
'título': [
'Dick Johnson está morto'
]
}
}
]
}
}
Você também pode usar o parâmetro _source para definir quais campos retornar de uma consulta de pesquisa. Um exemplo é mostrado abaixo:
curl -XGET 'http://localhost:9200/netflix/_search' -H 'kbn-xsrf: relatórios' -H 'Tipo de conteúdo: aplicativo/json' -d'{
'_source': ['title', 'release_year', 'rating', 'duration'],
'consulta': {
'termo': {
'_Eu iria': {
'valor': 'HXYz_IIBLbuC0z3qKeN2'
}
}
}
}'
Nesse caso, especificamos os campos que desejamos recuperar como um array no parâmetro source. A solicitação acima deve retornar a resposta conforme mostrado:
{'tomou': 0,
'timed_out': falso,
'_shards': {
'total': 1,
'bem sucedido': 1,
'pulado': 0,
'falhou': 0
},
'exitos': {
'total': {
'valor': 1,
'relação': 'eq'
},
'max_score': 1,
'exitos': [
{
'_index': 'netflix',
'_id': 'HXYz_IIBLbuC0z3qKeN2',
'_score': 1,
'_fonte': {
'duração': '90 minutos',
'lançamento_ano': 2020,
'classificação': 'PG-13',
'title': 'Dick Johnson Está Morto'
}
}
]
}
}
Conclusão
Neste artigo, você aprendeu como buscar campos específicos de uma solicitação de pesquisa usando os parâmetros fields e _source.
Para saber mais sobre o Elasticsearch e seus recursos, confira nossos tutoriais sobre o assunto. Você está garantido para encontrar algo útil.
Obrigado por ler e te pego no próximo !!