Elasticsearch - mapowanie

Mapowanie to zarys dokumentów przechowywanych w indeksie. Definiuje typ danych, taki jak geo_point lub string, i format pól występujących w dokumentach oraz reguły kontrolujące mapowanie dynamicznie dodawanych pól.

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

Po uruchomieniu powyższego kodu otrzymujemy odpowiedź, jak pokazano poniżej -

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

Typy danych pól

Elasticsearch obsługuje wiele różnych typów danych dla pól w dokumencie. Typy danych używane do przechowywania pól w Elasticsearch są szczegółowo omówione tutaj.

Podstawowe typy danych

Są to podstawowe typy danych, takie jak tekst, słowo kluczowe, data, long, double, boolean lub ip, które są obsługiwane przez prawie wszystkie systemy.

Złożone typy danych

Te typy danych są połączeniem podstawowych typów danych. Należą do nich tablica, obiekt JSON i zagnieżdżony typ danych. Przykład zagnieżdżonego typu danych pokazano poniżej & minus

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

Po uruchomieniu powyższego kodu otrzymujemy odpowiedź, jak pokazano poniżej -

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

Kolejny przykładowy kod pokazano poniżej -

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

Po uruchomieniu powyższego kodu otrzymujemy odpowiedź, jak pokazano poniżej -

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

Powyższy dokument możemy sprawdzić za pomocą następującego polecenia -

GET /accountdetails/_mappings?include_type_name=false

Usunięcie typów mapowania

Indeksy utworzone w Elasticsearch 7.0.0 lub nowszym nie akceptują już mapowania _default_. Indeksy utworzone w wersji 6.x będą nadal działać tak samo, jak wcześniej w Elasticsearch 6.x. Typy są przestarzałe w interfejsach API w wersji 7.0.