Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Mapping ›Mapping parameters

enabled

Elasticsearch пытается проиндексировать все поля, которые вы ему предоставляете, но иногда вы хотите просто сохранить поле без индексирования. Например, представьте, что вы используете Elasticsearch в качестве хранилища веб-сессий. Вы можете захотеть проиндексировать идентификатор сессии и время последнего обновления, но вам не нужно выполнять запросы или агрегации на самих данных сессии.

Настройка enabled, которая может быть применена только к определению отображения верхнего уровня и к полям типа object, заставляет Elasticsearch полностью пропустить обработку содержимого поля. JSON всё ещё можно извлечь из поля _source, но оно не будет доступно для поиска и не будет храниться каким-либо другим способом:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "user_id": {
        "type":  "keyword"
      },
      "last_updated": {
        "type": "date"
      },
      "session_data": { 
        "type": "object",
        "enabled": false
      }
    }
  }
}

PUT my-index-000001/_doc/session_1
{
  "user_id": "kimchy",
  "session_data": { 
    "arbitrary_object": {
      "some_array": [ "foo", "bar", { "baz": 2 } ]
    }
  },
  "last_updated": "2015-12-06T18:20:22"
}

PUT my-index-000001/_doc/session_2
{
  "user_id": "jpountz",
  "session_data": "none", 
  "last_updated": "2015-12-06T18:22:13"
}

Поле session_data отключено.

Любые произвольные данные могут быть переданы в поле session_data, так как они будут полностью игнорироваться.

Поле session_data также будет игнорировать значения, которые не являются JSON-объектами.

Вся схема может быть отключена, в этом случае документ хранится в поле _source, что означает, что его можно извлечь, но ни одно из его содержимого не будет проиндексировано каким-либо образом:

PUT my-index-000001
{
  "mappings": {
    "enabled": false 
  }
}

PUT my-index-000001/_doc/session_1
{
  "user_id": "kimchy",
  "session_data": {
    "arbitrary_object": {
      "some_array": [ "foo", "bar", { "baz": 2 } ]
    }
  },
  "last_updated": "2015-12-06T18:20:22"
}

GET my-index-000001/_doc/session_1 

GET my-index-000001/_mapping 

Вся схема отключена.

Документ можно извлечь.

Проверка схемы показывает, что поля не были добавлены.

Настройка enabled для существующих полей и определения схемы верхнего уровня не может быть обновлена.

Обратите внимание, что поскольку Elasticsearch полностью пропускает обработку содержимого поля, возможно добавить не-объектные данные в отключенное поле:

PUT my-index-000001
{
  "mappings": {
    "properties": {
      "session_data": {
        "type": "object",
        "enabled": false
      }
    }
  }
}

PUT my-index-000001/_doc/session_1
{
  "session_data": "foo bar" 
}

Документ добавляется успешно, даже если session_data содержит не-объектные данные.

© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/7.17/enabled.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API