Como faço para filtrar os resultados do Elasticsearch?

Como faço para filtrar os resultados do Elasticsearch?
Por padrão, o Elasticsearch usa uma pontuação de relevância para classificar os resultados de uma consulta de pesquisa. Uma pontuação de relevância determina o quão relevante um documento depende dos dados consultados.

No entanto, podemos aplicar filtros para diminuir e maximizar os documentos relevantes retornados de uma consulta.

Este guia aprenderá como aplicar condições em uma consulta de pesquisa de pesquisa para filtrar resultados mais precisos da consulta.

Filtrar por termo

Podemos usar o termo consulta para filtrar os resultados em uma consulta. Por exemplo, a consulta abaixo filtra documentos onde o nome da cidade é Nova York.

Get /kibana_sample_data_ecommerce /_search

"consulta":
"bool":
"Filtro": [
"termo":
"Geoip.City_name ":" Nova York "

]


Na consulta de exemplo acima, usamos um filtro booleano para procurar documentos que correspondam ao City_Name como “Nova York.”

O resultado de exemplo para isso é:

Vários termos

Você também pode corresponder a documentos que correspondem a dois ou mais termos. Por exemplo, podemos consultar registros onde o tipo = ordem e região = “Nova York”

Get /kibana_sample_data_ecommerce /_search

"consulta":
"bool":
"Filtro": [
"termo":
"Tipo": "Ordem"
,

"termo":
"Geoip.região_name ":" Nova York "


]


Nesse exemplo, tanto o tipo quanto o geoip.Region_name Fields deve avaliar verdadeiro com o termo pesquisado.

Exemplo de resultado:

Filtro de alcance

Para filtrar por um valor numérico, você pode usar condições booleanas. Por exemplo, para filtrar os resultados em que o preço do produto é maior que 1000, podemos fazer:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"bool":
"Filtro": [
"faixa":
"produtos.preço base":
"GTE": 1000


]

A consulta acima deve filtrar os documentos em que o BASE_PRICE dos itens é maior ou igual a 1000.

Aqui estão alguns resultados de exemplo:

Filtrar por frase

Suponha que você apenas se lembre de uma frase específica e não queira buscar todos os documentos no índice? Você pode usar o deve e match_phrase para restringir os resultados.

Por exemplo, e se apenas queremos colocar os produtos na categoria masculina, mas não tivermos certeza de todos os tipos específicos? Podemos executar uma consulta como:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"bool":
"deve": [
"match_phrase":
"produtos.categoria ":" masculino "

]


No exemplo acima, usamos o booleano para garantir que a frase correspondente corresponda à especificada.

Abaixo estão os resultados do exemplo:

Não deve filtrar

Também podemos usar o filtro Must_Not para remover todos os documentos que contêm uma frase ou alcance específico. Por exemplo, para excluir todos os documentos em que a data de compra é segunda -feira, podemos fazer:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"bool":
"Não deve": [
"corresponder":
"Day_of_week": "Segunda -feira"

]


Exemplo Resultados Retornar documentos que não contêm o dia_of_week como segunda -feira.

Conclusão

Este guia discutiu os resultados do Elasticsearch de filtragem usando condicional booleano, como faixa, deve e mais.