Elasticsearch Selecionar campos específicos

Elasticsearch Selecionar Campos Especificos



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 !!