Elasticsearch - Mapeamento

O mapeamento é o esboço dos documentos armazenados em um índice. Ele define o tipo de dados como geo_point ou string e o formato dos campos presentes nos documentos e regras para controlar o mapeamento de campos adicionados dinamicamente.

PUT bankaccountdetails
{
   "mappings":{
      "properties":{
         "name": { "type":"text"}, "date":{ "type":"date"},
         "balance":{ "type":"double"}, "liability":{ "type":"double"}
      }
   }
 }

Quando executamos o código acima, obtemos a resposta conforme mostrado abaixo -

{
   "acknowledged" : true,
   "shards_acknowledged" : true,
   "index" : "bankaccountdetails"
}

Tipos de dados de campo

Elasticsearch oferece suporte a vários tipos de dados diferentes para os campos de um documento. Os tipos de dados usados ​​para armazenar campos no Elasticsearch são discutidos em detalhes aqui.

Tipos de dados centrais

Estes são os tipos de dados básicos como texto, palavra-chave, data, longo, duplo, booleano ou ip, que são suportados por quase todos os sistemas.

Tipos de dados complexos

Esses tipos de dados são uma combinação de tipos de dados principais. Isso inclui array, objeto JSON e tipo de dados aninhados. Um exemplo de tipo de dados aninhado é mostrado abaixo e menos

POST /tabletennis/_doc/1
{
   "group" : "players",
   "user" : [
      {
         "first" : "dave", "last" : "jones"
      },
      {
         "first" : "kevin", "last" : "morris"
      }
   ]
}

Quando executamos o código acima, obtemos a resposta conforme mostrado abaixo -

{
   "_index" : "tabletennis",
   "_type" : "_doc",
   "_id" : "1",
   _version" : 2,
   "result" : "updated",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 1,
   "_primary_term" : 1
}

Outro exemplo de código é mostrado abaixo -

POST /accountdetails/_doc/1
{
   "from_acc":"7056443341", "to_acc":"7032460534",
   "date":"11/1/2016", "amount":10000
}

Quando executamos o código acima, obtemos a resposta conforme mostrado abaixo -

{  "_index" : "accountdetails",
   "_type" : "_doc",
   "_id" : "1",
   "_version" : 1,
   "result" : "created",
   "_shards" : {
      "total" : 2,
      "successful" : 1,
      "failed" : 0
   },
   "_seq_no" : 1,
   "_primary_term" : 1
}

Podemos verificar o documento acima usando o seguinte comando -

GET /accountdetails/_mappings?include_type_name=false

Remoção de tipos de mapeamento

Os índices criados no Elasticsearch 7.0.0 ou posterior não aceitam mais um mapeamento _default_. Os índices criados em 6.x continuarão a funcionar como antes no Elasticsearch 6.x. Os tipos foram descontinuados nas APIs no 7.0.