La cerca de text complet és una de les funcionalitats més potents d'Elasticsearch. Permet buscar text dins de documents de manera eficient i precisa, utilitzant una varietat de tècniques i operadors. En aquest tema, explorarem com funciona la cerca de text complet a Elasticsearch, els diferents tipus de cerques que es poden realitzar i com configurar-les.
Conceptes Clau
Abans de començar amb els exemples pràctics, és important entendre alguns conceptes clau:
- Anàlisi de Text: El procés de descomposar el text en unitats més petites (tokens) i normalitzar-lo per a la cerca.
- Tokenitzador: Una eina que divideix el text en tokens.
- Filtre de Token: Un component que modifica els tokens generats pel tokenitzador.
- Camp de Text: Un tipus de camp en un document que es pot analitzar per a la cerca de text complet.
Tipus de Cerques de Text Complet
Elasticsearch ofereix diversos tipus de cerques de text complet, cadascuna amb les seves pròpies característiques i usos:
- Match Query: Cerca documents que coincideixin amb el text proporcionat.
- Multi-Match Query: Cerca en múltiples camps alhora.
- Match Phrase Query: Cerca una frase exacta dins dels documents.
- Query String Query: Permet utilitzar una sintaxi de cerca avançada similar a la dels motors de cerca tradicionals.
Exemples Pràctics
- Match Query
La match
query és la més bàsica i s'utilitza per cercar documents que continguin el text especificat en un camp determinat.
Explicació:
index_name
: El nom de l'índex on es realitza la cerca.field_name
: El camp dins del document on es busca el text."text to search"
: El text que es vol cercar.
- Multi-Match Query
La multi_match
query permet cercar en múltiples camps alhora.
POST /index_name/_search { "query": { "multi_match": { "query": "text to search", "fields": ["field1", "field2", "field3"] } } }
Explicació:
query
: El text que es vol cercar.fields
: Una llista de camps on es realitzarà la cerca.
- Match Phrase Query
La match_phrase
query s'utilitza per cercar una frase exacta dins dels documents.
POST /index_name/_search { "query": { "match_phrase": { "field_name": "exact phrase to search" } } }
Explicació:
field_name
: El camp dins del document on es busca la frase exacta."exact phrase to search"
: La frase exacta que es vol cercar.
- Query String Query
La query_string
query permet utilitzar una sintaxi de cerca avançada, incloent operadors booleans, comodins, etc.
POST /index_name/_search { "query": { "query_string": { "query": "(field1:text OR field2:text) AND -field3:text" } } }
Explicació:
query
: La cadena de cerca amb la sintaxi avançada.(field1:text OR field2:text) AND -field3:text
: Un exemple de sintaxi avançada que cerca documents onfield1
ofield2
continguintext
, peròfield3
no continguitext
.
Exercicis Pràctics
Exercici 1: Cerca Bàsica amb Match Query
Objectiu: Realitzar una cerca bàsica utilitzant la match
query.
Instruccions:
- Crea un índex anomenat
library
. - Indexa els següents documents:
{ "title": "Elasticsearch Guide", "author": "John Doe" } { "title": "Learning Elasticsearch", "author": "Jane Smith" } { "title": "Advanced Elasticsearch", "author": "John Doe" }
- Realitza una cerca per trobar tots els documents on el títol contingui la paraula "Elasticsearch".
Solució:
Exercici 2: Cerca en Múltiples Camps amb Multi-Match Query
Objectiu: Realitzar una cerca en múltiples camps utilitzant la multi_match
query.
Instruccions:
- Utilitza l'índex
library
creat anteriorment. - Realitza una cerca per trobar tots els documents on el títol o l'autor continguin la paraula "John".
Solució:
POST /library/_search { "query": { "multi_match": { "query": "John", "fields": ["title", "author"] } } }
Exercici 3: Cerca de Frases amb Match Phrase Query
Objectiu: Realitzar una cerca de frases utilitzant la match_phrase
query.
Instruccions:
- Utilitza l'índex
library
creat anteriorment. - Realitza una cerca per trobar tots els documents on el títol contingui la frase exacta "Advanced Elasticsearch".
Solució:
Resum
En aquesta secció, hem après sobre la cerca de text complet a Elasticsearch, incloent els conceptes clau i els diferents tipus de cerques que es poden realitzar. Hem vist exemples pràctics de com utilitzar les queries match
, multi_match
, match_phrase
i query_string
. A més, hem practicat amb exercicis per reforçar els conceptes apresos. En el següent tema, explorarem tècniques de filtratge i ordenació per refinar encara més les nostres cerques.
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