Introducció

En aquest tema, explorarem el concepte de mapeig i analitzadors a Elasticsearch. El mapeig defineix l'estructura dels documents emmagatzemats en un índex, mentre que els analitzadors processen el text per fer-lo cercable. Comprendre aquests conceptes és fonamental per optimitzar la cerca i l'emmagatzematge de dades a Elasticsearch.

Què és el Mapeig?

El mapeig és el procés de definir l'estructura dels documents en un índex. Això inclou especificar els tipus de dades per a cada camp, com ara text, nombre, data, etc. El mapeig també permet definir com es processaran i indexaran aquests camps.

Tipus de Dades Comuns

  • text: Utilitzat per a camps que contenen text complet. Aquest tipus de camp és analitzat.
  • keyword: Utilitzat per a camps que contenen valors exactes, com ara codis postals o identificadors. Aquest tipus de camp no és analitzat.
  • integer: Utilitzat per a nombres enters.
  • float: Utilitzat per a nombres amb decimals.
  • date: Utilitzat per a dates.
  • boolean: Utilitzat per a valors veritat (true/false).

Exemple de Mapeig

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      },
      "publish_date": {
        "type": "date"
      },
      "price": {
        "type": "float"
      }
    }
  }
}

En aquest exemple, creem un índex anomenat my_index amb un mapeig que defineix quatre camps: title, author, publish_date i price.

Què és un Analitzador?

Un analitzador és un component que processa el text per fer-lo cercable. Un analitzador típicament inclou tres components principals:

  1. Tokenitzador: Divideix el text en paraules o tokens.
  2. Filtres de Token: Modifiquen els tokens generats pel tokenitzador (per exemple, convertint-los a minúscules).
  3. Filtres de Caràcters: Modifiquen el text abans de la tokenització (per exemple, eliminant caràcters especials).

Analitzador Per Defecte

Elasticsearch utilitza un analitzador per defecte que inclou un tokenitzador de paraules i filtres de minúscules.

Exemple d'Analitzador Personalitzat

PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_custom_analyzer": {
          "type": "custom",
          "tokenizer": "standard",
          "filter": [
            "lowercase",
            "asciifolding"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "my_custom_analyzer"
      }
    }
  }
}

En aquest exemple, creem un analitzador personalitzat anomenat my_custom_analyzer que utilitza el tokenitzador estàndard i dos filtres: lowercase i asciifolding. Aquest analitzador s'aplica al camp content.

Exercicis Pràctics

Exercici 1: Crear un Índex amb Mapeig

  1. Crea un índex anomenat library amb els següents camps:
    • book_title (text)
    • author_name (keyword)
    • publication_year (integer)
    • genre (keyword)

Solució

PUT /library
{
  "mappings": {
    "properties": {
      "book_title": {
        "type": "text"
      },
      "author_name": {
        "type": "keyword"
      },
      "publication_year": {
        "type": "integer"
      },
      "genre": {
        "type": "keyword"
      }
    }
  }
}

Exercici 2: Crear un Analitzador Personalitzat

  1. Crea un índex anomenat articles amb un analitzador personalitzat que:
    • Utilitzi el tokenitzador whitespace.
    • Inclogui els filtres lowercase i stop (per eliminar paraules buides).
    • Aplica aquest analitzador al camp body.

Solució

PUT /articles
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_article_analyzer": {
          "type": "custom",
          "tokenizer": "whitespace",
          "filter": [
            "lowercase",
            "stop"
          ]
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "body": {
        "type": "text",
        "analyzer": "my_article_analyzer"
      }
    }
  }
}

Resum

En aquesta secció, hem après sobre el mapeig i els analitzadors a Elasticsearch. Hem vist com definir l'estructura dels documents amb mapeigs i com processar el text amb analitzadors. També hem practicat la creació d'índexs amb mapeigs i analitzadors personalitzats. Aquests conceptes són fonamentals per optimitzar la cerca i l'emmagatzematge de dades a Elasticsearch. En el proper tema, explorarem les plantilles d'índex.

© Copyright 2024. Tots els drets reservats