En aquest tema, aprendrem com cercar dades a Elasticsearch. La cerca és una de les funcionalitats més potents d'Elasticsearch, i comprendre com utilitzar-la eficientment és crucial per treure el màxim profit d'aquesta eina.
- Introducció a la Cerca a Elasticsearch
Elasticsearch utilitza un llenguatge de consulta anomenat Query DSL (Domain Specific Language) per realitzar cerques. Aquest llenguatge permet construir consultes complexes de manera estructurada.
Conceptes Clau:
- Índex: Un conjunt de documents relacionats.
- Document: La unitat bàsica d'informació que es pot indexar.
- Tipus: Una categoria o esquema dins d'un índex (deprecated en versions recents).
- Camp: Una propietat d'un document.
- Tipus de Consultes
Elasticsearch ofereix diversos tipus de consultes per cercar dades. Les més comunes són:
2.1. Match Query
La consulta match
és utilitzada per cercar documents que coincideixin amb un text determinat en un camp específic.
2.2. Term Query
La consulta term
és utilitzada per cercar documents que continguin un valor exacte en un camp.
2.3. Range Query
La consulta range
és utilitzada per cercar documents amb valors dins d'un rang específic.
- Estructura de la Consulta
Una consulta bàsica a Elasticsearch té la següent estructura:
Exemple Pràctic
Suposem que tenim un índex anomenat employees
amb documents que contenen informació sobre empleats. Volem cercar tots els empleats que treballen en el departament de "vendes".
- Filtratge de Resultats
Elasticsearch permet filtrar resultats per obtenir només els documents que compleixin certs criteris.
4.1. Bool Query
La consulta bool
permet combinar múltiples condicions lògiques (must, should, must_not, filter).
GET /employees/_search { "query": { "bool": { "must": [ { "match": { "department": "vendes" } } ], "filter": [ { "range": { "age": { "gte": 30 } } } ] } } }
- Ordenació de Resultats
Podem ordenar els resultats de la cerca utilitzant el paràmetre sort
.
GET /employees/_search { "query": { "match": { "department": "vendes" } }, "sort": [ { "age": "asc" } ] }
- Paginació de Resultats
Elasticsearch permet paginar els resultats utilitzant els paràmetres from
i size
.
Exercicis Pràctics
Exercici 1: Cerca Bàsica
Cerca tots els documents en l'índex products
on el camp category
sigui "electronics".
Exercici 2: Filtratge i Ordenació
Cerca tots els documents en l'índex orders
on el camp status
sigui "completed" i ordena els resultats per la data de creació de manera descendent.
Exercici 3: Paginació
Cerca tots els documents en l'índex customers
on el camp city
sigui "Barcelona" i mostra els resultats de la segona pàgina amb 5 resultats per pàgina.
Solucions
Solució Exercici 1
Solució Exercici 2
GET /orders/_search { "query": { "match": { "status": "completed" } }, "sort": [ { "created_at": "desc" } ] }
Solució Exercici 3
Conclusió
En aquest tema, hem après com cercar dades a Elasticsearch utilitzant diverses consultes, filtrar i ordenar resultats, i paginar-los. Aquestes habilitats són fonamentals per treballar amb Elasticsearch de manera eficient. En el proper tema, explorarem com actualitzar i eliminar dades a 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