En aquest tema, aprendrem com utilitzar les capacitats de filtratge i ordenació d'Elasticsearch per refinar les cerques i obtenir resultats més rellevants. Aquestes tècniques són essencials per treballar amb grans volums de dades i assegurar-se que els resultats de les cerques siguin precisos i útils.
- Introducció al Filtratge
El filtratge en Elasticsearch permet restringir els resultats de la cerca a documents que compleixin certs criteris. A diferència de les cerques de text complet, els filtres no calculen la rellevància dels documents, sinó que simplement inclouen o exclouen documents basats en les condicions especificades.
Tipus de Filtres
Els filtres més comuns en Elasticsearch inclouen:
- Term Filter: Filtra documents que contenen un valor exacte en un camp.
- Range Filter: Filtra documents que tenen valors dins d'un rang específic.
- Exists Filter: Filtra documents que tenen un camp específic.
- Bool Filter: Combina múltiples filtres utilitzant operadors lògics (AND, OR, NOT).
Exemple de Filtratge
A continuació, es mostra un exemple de com utilitzar un filtre de terme i un filtre de rang en una cerca:
GET /index_name/_search { "query": { "bool": { "filter": [ { "term": { "status": "active" } }, { "range": { "age": { "gte": 30, "lte": 40 } } } ] } } }
En aquest exemple:
- El filtre de terme selecciona documents on el camp
status
ésactive
. - El filtre de rang selecciona documents on el camp
age
està entre 30 i 40 anys (inclosos).
- Introducció a l'Ordenació
L'ordenació en Elasticsearch permet especificar l'ordre en què es retornen els resultats de la cerca. Per defecte, els resultats es retornen basats en la rellevància, però es poden ordenar per qualsevol camp.
Tipus d'Ordenació
Els tipus d'ordenació més comuns inclouen:
- Ordenació per Camp: Ordena els resultats basats en el valor d'un camp específic.
- Ordenació per Puntuació: Ordena els resultats basats en la puntuació de rellevància (per defecte).
- Ordenació per Múltiples Camps: Ordena els resultats basats en múltiples camps, en ordre de prioritat.
Exemple d'Ordenació
A continuació, es mostra un exemple de com ordenar els resultats per un camp específic:
GET /index_name/_search { "query": { "match_all": {} }, "sort": [ { "age": { "order": "asc" } }, { "name": { "order": "desc" } } ] }
En aquest exemple:
- Els resultats es retornen ordenats primer pel camp
age
en ordre ascendent. - Si hi ha documents amb el mateix valor d'
age
, es retornen ordenats pel campname
en ordre descendent.
- Combinació de Filtratge i Ordenació
És comú combinar filtratge i ordenació en una sola consulta per obtenir resultats precisos i ordenats. A continuació, es mostra un exemple de com fer-ho:
GET /index_name/_search { "query": { "bool": { "filter": [ { "term": { "status": "active" } }, { "range": { "age": { "gte": 30, "lte": 40 } } } ] } }, "sort": [ { "age": { "order": "asc" } } ] }
En aquest exemple:
- Els resultats es filtren per documents on
status
ésactive
iage
està entre 30 i 40 anys. - Els resultats filtrats es retornen ordenats pel camp
age
en ordre ascendent.
- Exercicis Pràctics
Exercici 1: Filtratge per Termes
Crea una consulta que filtri els documents on el camp category
sigui electronics
.
Solució:
GET /index_name/_search { "query": { "bool": { "filter": [ { "term": { "category": "electronics" } } ] } } }
Exercici 2: Filtratge per Rang
Crea una consulta que filtri els documents on el camp price
estigui entre 100 i 200.
Solució:
GET /index_name/_search { "query": { "bool": { "filter": [ { "range": { "price": { "gte": 100, "lte": 200 } } } ] } } }
Exercici 3: Ordenació per Camp
Crea una consulta que ordeni els resultats pel camp rating
en ordre descendent.
Solució:
GET /index_name/_search { "query": { "match_all": {} }, "sort": [ { "rating": { "order": "desc" } } ] }
Exercici 4: Combinació de Filtratge i Ordenació
Crea una consulta que filtri els documents on el camp status
sigui available
i ordeni els resultats pel camp price
en ordre ascendent.
Solució:
GET /index_name/_search { "query": { "bool": { "filter": [ { "term": { "status": "available" } } ] } }, "sort": [ { "price": { "order": "asc" } } ] }
- Errors Comuns i Consells
Errors Comuns
- No especificar correctament els camps: Assegura't que els noms dels camps en els filtres i l'ordenació coincideixin exactament amb els noms dels camps en els documents.
- Confondre filtres i cerques: Recorda que els filtres no calculen la rellevància, només inclouen o exclouen documents basats en condicions.
Consells
- Utilitza filtres per millorar el rendiment: Els filtres són més eficients que les cerques de text complet perquè no calculen la rellevància.
- Combina filtres i cerques: Pots combinar filtres amb cerques de text complet per obtenir resultats rellevants i precisos.
Conclusió
En aquesta secció, hem après com utilitzar el filtratge i l'ordenació en Elasticsearch per refinar les cerques i obtenir resultats més rellevants. Hem vist exemples pràctics de com aplicar filtres de termes i rangs, així com com ordenar els resultats per camps específics. També hem practicat combinant filtratge i ordenació en una sola consulta. Amb aquestes tècniques, estaràs millor preparat per treballar amb grans volums de dades en Elasticsearch.
Curs d'Elasticsearch
Mòdul 1: Introducció a Elasticsearch
- Què és Elasticsearch?
- Instal·lant Elasticsearch
- Conceptes Bàsics: Nodes, Clústers i Índexs
- Arquitectura d'Elasticsearch
Mòdul 2: Començant amb Elasticsearch
Mòdul 3: Tècniques Avançades de Cerca
Mòdul 4: Modelatge de Dades i Gestió d'Índexs
Mòdul 5: Rendiment i Escalabilitat
- Optimitzant el Rendiment de la Cerca
- Escalant Elasticsearch
- Monitorització i Manteniment
- Còpia de Seguretat i Restauració
Mòdul 6: Seguretat i Control d'Accés
- Assegurant Elasticsearch
- Autenticació i Autorització d'Usuaris
- Control d'Accés Basat en Rols
- Auditoria i Compliment
Mòdul 7: Integracions i Ecosistema
- Elasticsearch amb Logstash
- Elasticsearch amb Kibana
- Elasticsearch amb Beats
- Elasticsearch amb Altres Eines