Spec-Zone.ru › Elasticsearch 7
›Elasticsearch Guide [7.17] ›Mapping ›Типы данных полей

Тип поля unsigned long

Тип поля unsigned long — это числовой тип поля, представляющий беззнаковое 64-битное целое число с минимальным значением 0 и максимальным значением 264-1 (от 0 до 18446744073709551615 включительно).

PUT my_index
{
  "mappings": {
    "properties": {
      "my_counter": {
        "type": "unsigned_long"
      }
    }
  }
}

Тип unsigned long может быть проиндексирован в числовой или строковой форме, представляющей целые значения в диапазоне [0, 18446744073709551615]. Они не могут иметь дробную часть.

POST /my_index/_bulk?refresh
{"index":{"_id":1}}
{"my_counter": 0}
{"index":{"_id":2}}
{"my_counter": 9223372036854775808}
{"index":{"_id":3}}
{"my_counter": 18446744073709551614}
{"index":{"_id":4}}
{"my_counter": 18446744073709551615}

Запросы term принимают любые числа в числовой или строковой форме.

GET /my_index/_search
{
    "query": {
        "term" : {
            "my_counter" : 18446744073709551615
        }
    }
}

Термы запросов range могут содержать значения с дробной частью. В этом случае Elasticsearch преобразует их в целые значения: gte и gt термины преобразуются в ближайшее целое число вверх включительно, а lt и lte диапазоны преобразуются в ближайшее целое число вниз включительно.

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

GET /my_index/_search
{
    "query": {
        "range" : {
            "my_counter" : {
                "gte" : "9223372036854775808.5",
                "lte" : "18446744073709551615"
            }
        }
    }
}

Для запросов с сортировкой по полю unsigned_long для конкретного документа Elasticsearch возвращает значение сортировки типа long, если значение этого документа находится в диапазоне значений long, или типа BigInteger, если значение выходит за этот диапазон.

REST-клиенты должны уметь обрабатывать большие целые значения в JSON для корректной поддержки этого типа поля.

GET /my_index/_search
{
    "query": {
        "match_all" : {}
    },
    "sort" : {"my_counter" : "desc"}
}

Unsigned long в скриптах

В настоящее время unsigned_long не поддерживается в скриптах.

Сохранённые поля

Сохранённое поле unsigned_long хранится и возвращается как String.

Агрегации

Для агрегаций terms, аналогично значениям сортировки, используются значения Long или BigInteger. Для других агрегаций значения преобразуются в тип double.

Запросы с смешанными числовыми типами

Поиск со смешанными числовыми типами, одним из которых является unsigned_long, поддерживается, за исключением запросов с сортировкой. Таким образом, запрос сортировки по двум индексам, где одноимённое поле имеет тип unsigned_long в одном индексе и тип long в другом, не даёт правильных результатов и должен быть избегнут. Если такая сортировка необходима, можно использовать скриптовое сортирование.

Агрегации по нескольким числовым типам, одним из которых является unsigned_long, поддерживаются. В этом случае значения преобразуются в тип double.

© 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/unsigned-long.html

Spec-Zone.ru

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