En aquest tema, aprendrem com cercar dades a Elasticsearch. La cerca és una de les funcionalitats més potents d'Elasticsearch, i comprendre com utilitzar-la eficientment és crucial per treure el màxim profit d'aquesta eina.

  1. Introducció a la Cerca a Elasticsearch

Elasticsearch utilitza un llenguatge de consulta anomenat Query DSL (Domain Specific Language) per realitzar cerques. Aquest llenguatge permet construir consultes complexes de manera estructurada.

Conceptes Clau:

  • Índex: Un conjunt de documents relacionats.
  • Document: La unitat bàsica d'informació que es pot indexar.
  • Tipus: Una categoria o esquema dins d'un índex (deprecated en versions recents).
  • Camp: Una propietat d'un document.

  1. Tipus de Consultes

Elasticsearch ofereix diversos tipus de consultes per cercar dades. Les més comunes són:

2.1. Match Query

La consulta match és utilitzada per cercar documents que coincideixin amb un text determinat en un camp específic.

GET /my_index/_search
{
  "query": {
    "match": {
      "message": "Elasticsearch"
    }
  }
}

2.2. Term Query

La consulta term és utilitzada per cercar documents que continguin un valor exacte en un camp.

GET /my_index/_search
{
  "query": {
    "term": {
      "status": "active"
    }
  }
}

2.3. Range Query

La consulta range és utilitzada per cercar documents amb valors dins d'un rang específic.

GET /my_index/_search
{
  "query": {
    "range": {
      "age": {
        "gte": 30,
        "lte": 40
      }
    }
  }
}

  1. Estructura de la Consulta

Una consulta bàsica a Elasticsearch té la següent estructura:

GET /index_name/_search
{
  "query": {
    "query_type": {
      "field": "value"
    }
  }
}

Exemple Pràctic

Suposem que tenim un índex anomenat employees amb documents que contenen informació sobre empleats. Volem cercar tots els empleats que treballen en el departament de "vendes".

GET /employees/_search
{
  "query": {
    "match": {
      "department": "vendes"
    }
  }
}

  1. Filtratge de Resultats

Elasticsearch permet filtrar resultats per obtenir només els documents que compleixin certs criteris.

4.1. Bool Query

La consulta bool permet combinar múltiples condicions lògiques (must, should, must_not, filter).

GET /employees/_search
{
  "query": {
    "bool": {
      "must": [
        { "match": { "department": "vendes" } }
      ],
      "filter": [
        { "range": { "age": { "gte": 30 } } }
      ]
    }
  }
}

  1. Ordenació de Resultats

Podem ordenar els resultats de la cerca utilitzant el paràmetre sort.

GET /employees/_search
{
  "query": {
    "match": {
      "department": "vendes"
    }
  },
  "sort": [
    { "age": "asc" }
  ]
}

  1. Paginació de Resultats

Elasticsearch permet paginar els resultats utilitzant els paràmetres from i size.

GET /employees/_search
{
  "query": {
    "match": {
      "department": "vendes"
    }
  },
  "from": 0,
  "size": 10
}

Exercicis Pràctics

Exercici 1: Cerca Bàsica

Cerca tots els documents en l'índex products on el camp category sigui "electronics".

Exercici 2: Filtratge i Ordenació

Cerca tots els documents en l'índex orders on el camp status sigui "completed" i ordena els resultats per la data de creació de manera descendent.

Exercici 3: Paginació

Cerca tots els documents en l'índex customers on el camp city sigui "Barcelona" i mostra els resultats de la segona pàgina amb 5 resultats per pàgina.

Solucions

Solució Exercici 1

GET /products/_search
{
  "query": {
    "match": {
      "category": "electronics"
    }
  }
}

Solució Exercici 2

GET /orders/_search
{
  "query": {
    "match": {
      "status": "completed"
    }
  },
  "sort": [
    { "created_at": "desc" }
  ]
}

Solució Exercici 3

GET /customers/_search
{
  "query": {
    "match": {
      "city": "Barcelona"
    }
  },
  "from": 5,
  "size": 5
}

Conclusió

En aquest tema, hem après com cercar dades a Elasticsearch utilitzant diverses consultes, filtrar i ordenar resultats, i paginar-los. Aquestes habilitats són fonamentals per treballar amb Elasticsearch de manera eficient. En el proper tema, explorarem com actualitzar i eliminar dades a Elasticsearch.

© Copyright 2024. Tots els drets reservats