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:

  1. Match Query: Cerca documents que coincideixin amb el text proporcionat.
  2. Multi-Match Query: Cerca en múltiples camps alhora.
  3. Match Phrase Query: Cerca una frase exacta dins dels documents.
  4. Query String Query: Permet utilitzar una sintaxi de cerca avançada similar a la dels motors de cerca tradicionals.

Exemples Pràctics

  1. 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.

POST /index_name/_search
{
  "query": {
    "match": {
      "field_name": "text to search"
    }
  }
}

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.

  1. 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.

  1. 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.

  1. 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 field1 o field2 continguin text, però field3 no contingui text.

Exercicis Pràctics

Exercici 1: Cerca Bàsica amb Match Query

Objectiu: Realitzar una cerca bàsica utilitzant la match query.

Instruccions:

  1. Crea un índex anomenat library.
  2. Indexa els següents documents:
    { "title": "Elasticsearch Guide", "author": "John Doe" }
    { "title": "Learning Elasticsearch", "author": "Jane Smith" }
    { "title": "Advanced Elasticsearch", "author": "John Doe" }
    
  3. Realitza una cerca per trobar tots els documents on el títol contingui la paraula "Elasticsearch".

Solució:

POST /library/_search
{
  "query": {
    "match": {
      "title": "Elasticsearch"
    }
  }
}

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:

  1. Utilitza l'índex library creat anteriorment.
  2. 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:

  1. Utilitza l'índex library creat anteriorment.
  2. Realitza una cerca per trobar tots els documents on el títol contingui la frase exacta "Advanced Elasticsearch".

Solució:

POST /library/_search
{
  "query": {
    "match_phrase": {
      "title": "Advanced Elasticsearch"
    }
  }
}

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.

© Copyright 2024. Tots els drets reservats