Elasticsearch - Mapeo

El mapeo es el esquema de los documentos almacenados en un índice. Define el tipo de datos como geo_point o cadena y formato de los campos presentes en los documentos y reglas para controlar el mapeo de campos agregados dinámicamente.

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

Cuando ejecutamos el código anterior, obtenemos la respuesta como se muestra a continuación:

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

Tipos de datos de campo

Elasticsearch admite varios tipos de datos diferentes para los campos de un documento. Los tipos de datos utilizados para almacenar campos en Elasticsearch se analizan en detalle aquí.

Tipos de datos principales

Estos son los tipos de datos básicos como texto, palabra clave, fecha, largo, doble, booleano o ip, que son compatibles con casi todos los sistemas.

Tipos de datos complejos

Estos tipos de datos son una combinación de tipos de datos básicos. Estos incluyen matriz, objeto JSON y tipo de datos anidados. A continuación se muestra un ejemplo de tipo de datos anidados y menos

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

Cuando ejecutamos el código anterior, obtenemos la respuesta como se muestra a continuación:

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

Otro código de muestra se muestra a continuación:

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

Cuando ejecutamos el código anterior, obtenemos la respuesta como se muestra a continuación:

{  "_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 el documento anterior usando el siguiente comando:

GET /accountdetails/_mappings?include_type_name=false

Eliminación de tipos de mapeo

Los índices creados en Elasticsearch 7.0.0 o posterior ya no aceptan una asignación _default_. Los índices creados en 6.x seguirán funcionando como antes en Elasticsearch 6.x. Los tipos están en desuso en las API en 7.0.