¿Cómo filtro los resultados de elasticsearch??

¿Cómo filtro los resultados de elasticsearch??
Por defecto, ElasticSearch utiliza una puntuación de relevancia para ordenar los resultados de una consulta de búsqueda. Una puntuación de relevancia determina cuán relevante es un documento dependiendo de los datos consultados.

Sin embargo, podemos aplicar filtros para reducir y maximizar los documentos relevantes devueltos de una consulta.

Esta guía aprenderá cómo aplicar las condiciones en una consulta de ElasticSearch para filtrar resultados de consulta más precisos.

Filtrar por término

Podemos usar el término consulta para filtrar los resultados en una consulta. Por ejemplo, la consulta a continuación filtra documentos donde el nombre de la ciudad es Nueva York.

Get /kibana_sample_data_ecommerce /_search

"consulta":
"Bool":
"Filtrar": [
"término":
"Geoip.City_Name ":" Nueva York "

]


En la consulta de ejemplo anterior, utilizamos un filtro booleano para buscar documentos que coincidan con la ciudad_name como "Nueva York."

El resultado de ejemplo para esto es:

Múltiples términos

También puede hacer coincidir documentos que coincidan con dos o más términos. Por ejemplo, podemos consultar para registros donde el tipo = orden y región = "Nueva York"

Get /kibana_sample_data_ecommerce /_search

"consulta":
"Bool":
"Filtrar": [
"término":
"Tipo": "Orden"
,

"término":
"Geoip.Region_Name ":" Nueva York "


]


En tal ejemplo, tanto el tipo como el geoip.Los campos region_name deben evaluar fiel al término buscado.

Resultado de ejemplo:

Filtro de rango

Para filtrar por un valor numérico, puede usar condiciones booleanas. Por ejemplo, para filtrar los resultados donde el precio del producto es mayor que 1000, podemos hacer:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"Bool":
"Filtrar": [
"rango":
"Productos.precio base":
"GTE": 1000


]

La consulta anterior debe filtrar los documentos donde el base_price de los elementos es mayor o igual a 1000.

Aquí hay algunos resultados de ejemplo:

Filtrar por frase

Supongamos que solo recuerda una frase específica y no quiere obtener todos los documentos en el índice? Puede usar Must and Match_phrase para reducir los resultados.

Por ejemplo, ¿qué pasa si solo queremos obtener los productos en la categoría de hombres pero no estamos seguros de todos los tipos específicos?? Podemos ejecutar una consulta como:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"Bool":
"debe": [
"Match_phrase":
"Productos.Categoría ":" Hombres "

]


En el ejemplo anterior, usamos el booleano Must para garantizar que la frase coincidente coincida con la especificada.

A continuación se presentan resultados de ejemplo:

No debe filtrar

También podemos usar el filtro must_not para eliminar todos los documentos que contienen una frase o rango específico. Por ejemplo, para excluir todos los documentos donde la fecha de compra es el lunes, podemos hacer:

Get /kibana_sample_data_ecommerce /_search

"consulta":
"Bool":
"no debe": [
"fósforo":
"Day_of_week": "Lunes"

]


Ejemplo de resultados de devolución de documentos que no contienen el día_of_week como lunes.

Conclusión

Esta guía discutió los resultados de filtrado de ElasticSearch utilizando condicional booleano, como rango, must y más.