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
titleha de contenir "Elasticsearch". - El camp
statusha de tenir el valor exacte "active". - El camp
dateno ha de ser posterior a l'1 de gener de 2024. - És desitjable que el camp
descriptioncontingui "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
authorcontingui "John". - El camp
statustingui el valor exacte "published". - El camp
viewsno sigui menor de 1000. - És desitjable que el camp
tagscontingui "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
