Типы полей диапазона
Типы полей диапазона представляют собой непрерывный диапазон значений между верхней и нижней границами. Например, диапазон может представлять любую дату в октябре или любое целое число от 0 до 9. Они определяются с помощью операторов gt или gte для нижней границы и lt или lte для верхней границы. Они могут использоваться для запросов и имеют ограниченную поддержку агрегаций. Поддерживаются только агрегации гистограммы и cardinality.
Поддерживаются следующие типы диапазонов:
| | Диапазон целых 32-битных чисел со знаком с минимальным значением |
| | Диапазон значений с плавающей запятой одинарной точности 32-битного IEEE 754. |
| | Диапазон целых 64-битных чисел со знаком с минимальным значением |
| | Диапазон значений с плавающей запятой двойной точности 64-битного IEEE 754. |
| | Диапазон значений |
| | Диапазон значений IP, поддерживающий адреса IPv4 или IPv6 (или смешанные). |
Ниже приведен пример конфигурации отображения с различными полями диапазона, за которым следует пример индексации нескольких типов диапазонов.
PUT range_index
{
"settings": {
"number_of_shards": 2
},
"mappings": {
"properties": {
"expected_attendees": {
"type": "integer_range"
},
"time_frame": {
"type": "date_range",
"format": "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis"
}
}
}
}
PUT range_index/_doc/1?refresh
{
"expected_attendees" : {
"gte" : 10,
"lt" : 20
},
"time_frame" : {
"gte" : "2015-10-31 12:00:00",
"lte" : "2015-11-01"
}
} | Типы | |
| Пример индексирования встречи с 10 до 20 участниками, не включая 20. | |
| Пример диапазона дат с использованием отметки времени. |
Ниже приведен пример запроса терминового запроса к полю integer_range с именем "expected_attendees". 12 - значение внутри диапазона, поэтому оно будет соответствовать.
GET range_index/_search
{
"query" : {
"term" : {
"expected_attendees" : {
"value": 12
}
}
}
} Результат, полученный с помощью вышеуказанного запроса.
{
"took": 13,
"timed_out": false,
"_shards" : {
"total": 2,
"successful": 2,
"skipped" : 0,
"failed": 0
},
"hits" : {
"total" : {
"value": 1,
"relation": "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "range_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"expected_attendees" : {
"gte" : 10, "lt" : 20
},
"time_frame" : {
"gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01"
}
}
}
]
}
} Следующий пример - это запрос date_range по полю date_range с именем "time_frame".
GET range_index/_search
{
"query" : {
"range" : {
"time_frame" : {
"gte" : "2015-10-31",
"lte" : "2015-11-01",
"relation" : "within"
}
}
}
} | Запросы по диапазонам работают так же, как описано в запросе по диапазону. | |
| Запросы по диапазонам над полями диапазона поддерживают параметр |
Этот запрос даст аналогичный результат:
{
"took": 13,
"timed_out": false,
"_shards" : {
"total": 2,
"successful": 2,
"skipped" : 0,
"failed": 0
},
"hits" : {
"total" : {
"value": 1,
"relation": "eq"
},
"max_score" : 1.0,
"hits" : [
{
"_index" : "range_index",
"_type" : "_doc",
"_id" : "1",
"_score" : 1.0,
"_source" : {
"expected_attendees" : {
"gte" : 10, "lt" : 20
},
"time_frame" : {
"gte" : "2015-10-31 12:00:00", "lte" : "2015-11-01"
}
}
}
]
}
} Диапазон IP
В дополнение к формату диапазона выше, диапазоны IP могут быть предоставлены в нотации CIDR:
PUT range_index/_mapping
{
"properties": {
"ip_allowlist": {
"type": "ip_range"
}
}
}
PUT range_index/_doc/2
{
"ip_allowlist" : "192.168.0.0/16"
} Параметры для полей диапазона
Принимаются следующие параметры для типов диапазонов:
| Попытка преобразовать строки в числа и усечение дробей для целых чисел. Принимает | |
| Усиление запросов на уровне поля во время запроса. Принимает число с плавающей запятой, по умолчанию | |
| Должно ли поле быть доступным для поиска? Принимает | |
| Необходимо ли хранить значение поля отдельно от поля |
© 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/range.html