English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Маппинг Elasticsearch

Маппинг - это контур документов, хранящихся в индексе. Он определяет тип данных, такие как geo_point или строка, а также формат и правила полей, отображаемых в документе, чтобы контролировать динамическое добавление полей.

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

Когда мы запускаем上面的 код, мы получаем такой ответ-

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

Типы данных полей

Elasticsearch поддерживает множество различных типов данных для полей документов. Здесь подробно обсуждаются типы данных, используемые для хранения полей в Elasticsearch.

Основные типы данных

Эти типы данных являются базовыми, например текст, ключевые слова, даты, целые числа, двойная точность, булево или ip, почти все системы поддерживают.

Комплексные типы данных

Эти типы данных являются комбинацией основных типов данных. Это включает в себя массивы, JSON объекты и вложенные типы данных. Пример вложенного типа данных приведен ниже&minus

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

Когда мы запускаем上面的 код, мы получаем такой ответ-

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

Другой пример кода выглядит следующим образом-

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

Когда мы запускаем上面的 код, мы получаем такой ответ-

{
    "_index": "accountdetails",

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

Мы можем использовать следующую команду для проверки вышеуказанных документов-

GET /accountdetails/_mappings?include_type_name=false

Удаление типа маппинга

Индекс, созданный в Elasticsearch 7.0.0 или выше, больше не принимает маппинг по умолчанию. Индексы 6.x将继续 работать в Elasticsearch 6.x, как и раньше. Типы弃ены в API 7.0.