Тип поля IP
Поле типа ip может индексировать/хранить адреса IPv4 или IPv6.
PUT my-index-000001
{
"mappings": {
"properties": {
"ip_addr": {
"type": "ip"
}
}
}
}
PUT my-index-000001/_doc/1
{
"ip_addr": "192.168.1.1"
}
GET my-index-000001/_search
{
"query": {
"term": {
"ip_addr": "192.168.0.0/16"
}
}
} Вы также можете хранить диапазоны IP в одном поле, используя тип данных ip_range.
Параметры для полей ip
Следующие параметры принимаются полями ip:
-
boost - Усиление запроса на уровне поля. Принимает число с плавающей точкой, по умолчанию
1.0. -
doc_values - Нужно ли хранить поле на диске в виде столбцов, чтобы его можно было использовать для сортировки, агрегаций или сценариев? Принимает
true(по умолчанию) илиfalse. -
ignore_malformed - Если
true, неправильные IP-адреса игнорируются. Еслиfalse(по умолчанию), неправильные IP-адреса вызывают исключение и отбрасывают весь документ. Обратите внимание, что это нельзя задать, если используется параметрscript. -
index - Должно ли поле быть поисковым? Принимает
true(по умолчанию) иfalse. -
null_value - Принимает значение IPv4 или IPv6, которое заменяет явные
nullзначения. По умолчаниюnull, что означает, что поле считается отсутствующим. Обратите внимание, что это нельзя задать, если используется параметрscript. -
on_script_error - Определяет, что делать, если скрипт, определенный параметром
script, выбрасывает ошибку во время индексирования. Принимаетreject(по умолчанию), что приведет к отклонению всего документа, иignore, что зарегистрирует поле в метаданных документа_ignoredи продолжит индексирование. Этот параметр можно задать только в том случае, если также задано полеscript. -
script - Если этот параметр установлен, поле будет индексировать значения, сгенерированные этим скриптом, а не читать значения непосредственно из источника. Если для этого поля задано значение в документе ввода, документ будет отклонен с ошибкой. Сценарии имеют тот же формат, что и их runtime эквивалент, и должны выводить строки, содержащие адреса в формате IPv4 или IPv6.
-
store - Нужно ли хранить значение поля отдельно от поля
_source. Принимаетtrueилиfalse(по умолчанию). -
time_series_dimension -
[preview] Эта функциональность находится в техническом предварительном просмотре и может быть изменена или удалена в будущей версии выпуска. Elastic будет работать над устранением любых проблем, но функции технического предварительного просмотра не подпадают под SLA поддержки официальных функций GA. (Необязательно, булево)
Только для внутреннего использования Elastic.
Помечает поле как временной ряд. По умолчанию
false.Настройка индекса
index.mapping.dimension_fields.limitограничивает количество измерений в индексе.Поля измерения имеют следующие ограничения:
- Параметры отображения
doc_valuesиindexдолжны бытьtrue. - Значения полей не могут быть массивом или многозначным.
- Параметры отображения
Запрос к полям ip
Наиболее распространенный способ запроса IP-адресов — использование нотации CIDR: [ip_address]/[prefix_length]. Например:
GET my-index-000001/_search
{
"query": {
"term": {
"ip_addr": "192.168.0.0/16"
}
}
} или
GET my-index-000001/_search
{
"query": {
"term": {
"ip_addr": "2001:db8::/48"
}
}
} Также следует помнить, что двоеточия — это специальные символы для запроса query_string, поэтому для ipv6 адресов потребуется экранирование. Самый простой способ сделать это — поместить искомое значение в кавычки:
GET my-index-000001/_search
{
"query": {
"query_string" : {
"query": "ip_addr:\"2001:db8::/48\""
}
}
}
© 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/ip.html