Elasticsearch Query DSL (Domain Specific Language) és un llenguatge específic de domini que permet construir cerques complexes i potents en Elasticsearch. Aquest llenguatge és molt flexible i permet combinar diferents tipus de cerques i filtres per obtenir resultats precisos.
Conceptes Clau
Abans de començar a construir cerques amb Query DSL, és important entendre alguns conceptes bàsics:
- Query: Una consulta que recupera documents que compleixen certs criteris.
- Filter: Un filtre que restringeix els documents que es consideren per a una consulta.
- Bool Query: Una consulta que combina múltiples subconsultes amb operadors lògics (AND, OR, NOT).
Tipus de Consultes
Elasticsearch ofereix diversos tipus de consultes que es poden utilitzar en Query DSL. A continuació, es presenten alguns dels més comuns:
- Match Query
La consulta match
és una de les més utilitzades i permet buscar documents que continguin un text determinat en un camp específic.
- Term Query
La consulta term
busca documents que continguin un valor exacte en un camp.
- Range Query
La consulta range
permet buscar documents que tinguin valors dins d'un rang específic.
- Bool Query
La consulta bool
permet combinar múltiples subconsultes amb operadors lògics.
{ "query": { "bool": { "must": [ { "match": { "field_name": "value1" } } ], "filter": [ { "term": { "field_name": "value2" } } ], "must_not": [ { "range": { "field_name": { "gte": 10, "lte": 20 } } } ], "should": [ { "match": { "field_name": "value3" } } ] } } }
Exemples Pràctics
Exemple 1: Cerca Bàsica amb Match Query
Explicació: Aquesta consulta busca documents on el camp title
contingui la paraula "Elasticsearch".
Exemple 2: Filtratge amb Term Query
Explicació: Aquesta consulta busca documents on el camp status
tingui el valor exacte "active".
Exemple 3: Cerca amb Rang de Dates
Explicació: Aquesta consulta busca documents on el camp date
estigui dins del rang de l'1 de gener de 2023 al 31 de desembre de 2023.
Exemple 4: Combinació de Consultes amb Bool Query
{ "query": { "bool": { "must": [ { "match": { "title": "Elasticsearch" } } ], "filter": [ { "term": { "status": "active" } } ], "must_not": [ { "range": { "date": { "gte": "2024-01-01" } } } ], "should": [ { "match": { "description": "search engine" } } ] } } }
Explicació: Aquesta consulta busca documents que compleixin les següents condicions:
- El camp
title
ha de contenir "Elasticsearch". - El camp
status
ha de tenir el valor exacte "active". - El camp
date
no ha de ser posterior a l'1 de gener de 2024. - És desitjable que el camp
description
contingui "search engine".
Exercicis Pràctics
Exercici 1: Cerca de Text Complet
Crea una consulta que busqui documents on el camp content
contingui la paraula "tutorial".
Solució:
Exercici 2: Filtratge per Valor Exacte
Crea una consulta que busqui documents on el camp category
tingui el valor exacte "technology".
Solució:
Exercici 3: Cerca amb Rang de Valors
Crea una consulta que busqui documents on el camp price
estigui entre 50 i 100.
Solució:
Exercici 4: Combinació de Consultes
Crea una consulta que busqui documents on:
- El camp
author
contingui "John". - El camp
status
tingui el valor exacte "published". - El camp
views
no sigui menor de 1000. - És desitjable que el camp
tags
contingui "Elasticsearch".
Solució:
{ "query": { "bool": { "must": [ { "match": { "author": "John" } } ], "filter": [ { "term": { "status": "published" } } ], "must_not": [ { "range": { "views": { "lt": 1000 } } } ], "should": [ { "match": { "tags": "Elasticsearch" } } ] } } }
Conclusió
Elasticsearch Query DSL és una eina poderosa per construir cerques complexes i precises. Amb una comprensió bàsica dels diferents tipus de consultes i com combinar-les, pots aprofitar al màxim les capacitats de cerca d'Elasticsearch. Practica amb els exemples i exercicis proporcionats per familiaritzar-te amb les diferents opcions disponibles.
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