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 on- field1o- field2continguin- text, però- field3no contingui- text.
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 librarycreat 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 librarycreat 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
