DEV Community

Bruno Flegler Dal'Col
Bruno Flegler Dal'Col

Posted on

#009: Como definir um template para um índice

No artigo anterior #008: Como definir o mapeamento no Elasticsearch definimos um mapping diretamente no índice, porém podemos criar um template e criar o índice a partir dele. Essa estratégia é útil quando criamos índices temporais.

PUT /_template/customers
{
  "index_patterns": [
    "customers_*"
  ],
  "aliases": {
    "customers": {}
  },
  "mappings": {
    "properties": {
      "id": {
        "type": "text"
      },
      "age": {
        "type": "integer"
      },
      "email": {
        "type": "text"
      },
      "name": {
        "type": "text"
      },
      "createdAt": {
        "type": "date"
      }
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

O campo index_patterns será usado para corresponder aos nomes dos índices durante a criação. Exemplo: customers_2022_02, customers_2022_03, uma vez que o nome do índice corresponde ao pattern customers_* o índice é criado com o mapping definido no template.

PUT /customers_2022_02
Enter fullscreen mode Exit fullscreen mode
GET /customers_2022_02/_mapping
{
  "customers_2022_02" : {
    "mappings" : {
      "properties" : {
        "age" : {
          "type" : "integer"
        },
        "createdAt" : {
          "type" : "date"
        },
        "email" : {
          "type" : "text"
        },
        "id" : {
          "type" : "text"
        },
        "name" : {
          "type" : "text"
        }
      }
    }
  }
}

Enter fullscreen mode Exit fullscreen mode

O campo aliases também é bem útil quando queremos buscar em todos índices criados a partir do template. Exemplo: customers_2022_02, customers_2022_03, podemos pesquisar em ambos índices utilizando apenas o nome customers.

GET /customers/_search
{
  "query": {
    "match_all": {}
  }
}
Enter fullscreen mode Exit fullscreen mode

Sua vez de praticar, te vejo em breve.

Top comments (0)