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.