configuring opensearch
Существует два типа настроек OpenSearch: динамические и статические.
Динамические настройки
Динамические настройки индекса — это настройки, которые вы можете обновлять в любое время. Вы можете настраивать динамические параметры OpenSearch через API настроек кластера. Для получения подробной информации смотрите раздел Обновление настроек кластера с помощью API.
При возможности используйте API настроек кластера; файл opensearch.yml
локален для каждого узла, в то время как API применяет настройки ко всем узлам в кластере.
Статические настройки
Некоторые операции являются статическими и требуют изменения конфигурационного файла opensearch.yml
и перезапуска кластера. В общем, эти настройки относятся к сетевым параметрам, формированию кластера и локальной файловой системе. Чтобы узнать больше, смотрите раздел Формирование кластера.
Указание настроек в виде переменных окружения
Вы можете указывать переменные окружения следующими способами:
Аргументы при запуске
Вы можете указать переменные окружения в качестве аргументов, используя -E
при запуске OpenSearch:
./opensearch -Ecluster.name=opensearch-cluster -Enode.name=opensearch-node1 -Ehttp.host=0.0.0.0 -Ediscovery.type=single-node
Непосредственно в среде оболочки
Вы можете настроить переменные окружения непосредственно в среде оболочки перед запуском OpenSearch, как показано в следующем примере:
export OPENSEARCH_JAVA_OPTS="-Xms2g -Xmx2g"
export OPENSEARCH_PATH_CONF="/etc/opensearch"
./opensearch
Файл службы systemd
При запуске OpenSearch как службы, управляемой systemd, вы можете указать переменные окружения в файле службы, как показано в следующем примере:
# /etc/systemd/system/opensearch.service.d/override.conf
[Service]
Environment="OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g"
Environment="OPENSEARCH_PATH_CONF=/etc/opensearch"
После создания или изменения файла перезагрузите конфигурацию systemd и перезапустите службу с помощью следующих команд:
sudo systemctl daemon-reload
sudo systemctl restart opensearch
Переменные окружения Docker
При запуске OpenSearch в Docker вы можете указать переменные окружения, используя опцию -e
с командой docker run
, как показано в следующей команде:
docker run -e "OPENSEARCH_JAVA_OPTS=-Xms2g -Xmx2g" -e "OPENSEARCH_PATH_CONF=/usr/share/opensearch/config" opensearchproject/opensearch:latest
Обновление настроек кластера с помощью API
Первый шаг в изменении настройки — это просмотр текущих настроек, отправив следующий запрос:
GET _cluster/settings?include_defaults=true
Для более краткого резюме нестандартных настроек отправьте следующий запрос:
В API настроек кластера существуют три категории настроек: постоянные, временные и стандартные. Постоянные настройки сохраняются после перезапуска кластера. После перезапуска OpenSearch очищает временные настройки.
Если вы указываете одну и ту же настройку в нескольких местах, OpenSearch использует следующий порядок приоритета:
- Временные настройки
- Постоянные настройки
- Настройки из
opensearch.yml
- Стандартные настройки
Чтобы изменить настройку, используйте API настроек кластера и укажите новое значение как постоянное или временное. Этот пример показывает форму плоских настроек:
PUT _cluster/settings
{
"persistent" : {
"action.auto_create_index" : false
}
}
Вы также можете использовать расширенную форму, которая позволяет вам копировать и вставлять из ответа GET и изменять существующие значения:
PUT _cluster/settings
{
"persistent": {
"action": {
"auto_create_index": false
}
}
}
Конфигурационный файл
Вы можете найти файл opensearch.yml
по следующему пути:
- Для Docker:
/usr/share/opensearch/config/opensearch.yml
- Для большинства дистрибутивов Linux:
/etc/opensearch/opensearch.yml
Вы можете отредактировать переменную OPENSEARCH_PATH_CONF=/etc/opensearch
, чтобы изменить расположение каталога конфигурации. Эта переменная берется из /etc/default/opensearch
(для Debian-пакета) и /etc/sysconfig/opensearch
(для RPM-пакета).
Если вы установите свою пользовательскую переменную OPENSEARCH_PATH_CONF
, имейте в виду, что другие стандартные переменные окружения не будут загружены.
В файле opensearch.yml
вы не помечаете настройки как постоянные или временные, и настройки используют плоскую форму:
cluster.name: my-application
action.auto_create_index: true
compatibility.override_main_response_version: true
Демонстрационная конфигурация включает в себя ряд настроек для плагина безопасности, которые вы должны изменить перед использованием OpenSearch для производственной нагрузки. Чтобы узнать больше, смотрите раздел Безопасность.
(Необязательно) Конфигурация заголовков CORS
Если вы работаете над клиентским приложением, которое взаимодействует с кластером OpenSearch на другом домене, вы можете настроить заголовки в opensearch.yml
, чтобы разрешить разработку локального приложения на той же машине. Используйте механизм Cross Origin Resource Sharing (CORS), чтобы ваше приложение могло делать вызовы к API OpenSearch, работающему локально. Добавьте следующие строки в ваш файл custom-opensearch.yml
(обратите внимание, что символ “-” должен быть первым символом в каждой строке):
- http.host: 0.0.0.0
- http.port: 9200
- http.cors.allow-origin: "http://localhost"
- http.cors.enabled: true
- http.cors.allow-headers: X-Requested-With,X-Auth-Token,Content-Type,Content-Length,Authorization
- http.cors.allow-credentials: true
1 - Настройки доступности и восстановления
Настройки доступности и восстановления включают настройки для следующих компонентов
- Снимки
- Ограничение задач менеджера кластера
- Хранение с удаленной поддержкой
- Обратное давление при поиске
- Обратное давление при индексации шардов
- Репликация сегментов
- Репликация между кластерами
Чтобы узнать больше о статических и динамических настройках, см. Настройка OpenSearch.
Настройки снимков
OpenSearch поддерживает следующие настройки снимков:
- snapshot.max_concurrent_operations (Динамическое, целое число): Максимальное количество одновременных операций снимков. По умолчанию 1000.
Настройки снимков, связанные с безопасностью
Для настроек снимков, связанных с безопасностью, см. Настройки безопасности.
Настройки файловой системы
Для получения информации о настройках файловой системы см. Общая файловая система.
Настройки Amazon S3
Для получения информации о настройках репозитория Amazon S3 см. Amazon S3.
Настройки ограничения задач менеджера кластера
Для получения информации о настройках ограничения задач менеджера кластера см. Установка пределов ограничения.
Настройки хранения с удаленной поддержкой
OpenSearch поддерживает следующие настройки хранения с удаленной поддержкой на уровне кластера:
-
cluster.remote_store.translog.buffer_interval (Динамическое, единица времени): Значение по умолчанию для интервала буфера транзакционного лога, используемого при выполнении периодических обновлений транзакционного лога. Эта настройка эффективна только в том случае, если настройка индекса index.remote_store.translog.buffer_interval
отсутствует.
-
remote_store.moving_average_window_size (Динамическое, целое число): Размер окна скользящего среднего, используемый для расчета значений скользящей статистики, доступных через API статистики удаленного хранилища. По умолчанию 20. Минимально допустимое значение - 5.
Для получения дополнительной информации о настройках хранения с удаленной поддержкой см. Хранение с удаленной поддержкой и Настройка хранения с удаленной поддержкой.
Для получения информации о настройках обратного давления сегментов см. Настройки обратного давления сегментов.
Настройки обратного давления при поиске
Обратное давление при поиске - это механизм, используемый для выявления ресурсоемких запросов на поиск и их отмены, когда узел испытывает нагрузку. Для получения дополнительной информации см. Настройки обратного давления при поиске.
Настройки обратного давления при индексации шардов
Обратное давление при индексации шардов - это механизм умного отклонения на уровне шардов, который динамически отклоняет запросы на индексацию, когда ваш кластер испытывает нагрузку. Для получения дополнительной информации см. Настройки обратного давления при индексации шардов.
Настройки репликации сегментов
Для получения информации о настройках репликации сегментов см. Репликация сегментов.
Для получения информации о настройках обратного давления репликации сегментов см. Обратное давление репликации сегментов.
Настройки репликации между кластерами
Для получения информации о настройках репликации между кластерами см. Настройки репликации.
2 - Конфигурация и системные настройки
Обзор настрек Opensearch
Для получения обзора создания кластера OpenSearch и примеров настроек конфигурации см. раздел Создание кластера. Чтобы узнать больше о статических и динамических настройках, см. раздел Настройка OpenSearch.
OpenSearch поддерживает следующие системные настройки:
-
cluster.name (Статическая, строка): Имя кластера.
-
node.name (Статическая, строка): Описательное имя для узла.
-
node.roles (Статическая, список): Определяет одну или несколько ролей для узла OpenSearch. Допустимые значения: cluster_manager
, data
, ingest
, search
, ml
, remote_cluster_client
и coordinating_only
.
-
path.data (Статическая, строка): Путь к директории, где хранятся ваши данные. Разделяйте несколько местоположений запятыми.
-
path.logs (Статическая, строка): Путь к файлам журналов.
-
bootstrap.memory_lock (Статическая, логическое): Блокирует память при запуске. Рекомендуется установить размер кучи примерно на половину доступной памяти в системе и убедиться, что владелец процесса имеет право использовать этот лимит. OpenSearch работает неэффективно, когда система использует свопинг памяти.
3 - Сетевые настройки
OpenSearch использует настройки HTTP для конфигурации связи с внешними клиентами через REST API и транспортные настройки для внутренней связи между узлами в OpenSearch.
Чтобы узнать больше о статических и динамических настройках, см. раздел Настройка OpenSearch.
OpenSearch поддерживает следующие общие сетевые настройки:
-
network.host (Статическая, список): Привязывает узел OpenSearch к адресу. Используйте 0.0.0.0
, чтобы включить все доступные сетевые интерфейсы, или укажите IP-адрес, назначенный конкретному интерфейсу. Настройка network.host
является комбинацией network.bind_host
и network.publish_host
, если они имеют одинаковое значение. Альтернативой network.host
является отдельная настройка network.bind_host
и network.publish_host
по мере необходимости. См. раздел Расширенные сетевые настройки.
-
http.port (Статическая, одно значение или диапазон): Привязывает узел OpenSearch к пользовательскому порту или диапазону портов для HTTP-связи. Вы можете указать адрес или диапазон адресов. По умолчанию — 9200-9300.
-
transport.port (Статическая, одно значение или диапазон): Привязывает узел OpenSearch к пользовательскому порту для связи между узлами. Вы можете указать адрес или диапазон адресов. По умолчанию — 9300-9400.
Расширенные сетевые настройки
OpenSearch поддерживает следующие расширенные сетевые настройки:
-
network.bind_host (Статическая, список): Привязывает узел OpenSearch к адресу или адресам для входящих соединений. По умолчанию — значение из network.host
.
-
network.publish_host (Статическая, список): Указывает адрес или адреса, которые узел OpenSearch публикует для других узлов в кластере, чтобы они могли подключиться к нему.
Расширенные HTTP-настройки
OpenSearch поддерживает следующие расширенные сетевые настройки для HTTP-связи:
-
http.host (Статическая, список): Устанавливает адрес узла OpenSearch для HTTP-связи. Настройка http.host
является комбинацией http.bind_host
и http.publish_host
, если они имеют одинаковое значение. Альтернативой http.host
является отдельная настройка http.bind_host
и http.publish_host
по мере необходимости.
-
http.bind_host (Статическая, список): Указывает адрес или адреса, к которым узел OpenSearch привязывается для прослушивания входящих HTTP-соединений.
-
http.publish_host (Статическая, список): Указывает адрес или адреса, которые узел OpenSearch публикует для других узлов для HTTP-связи.
-
http.compression (Статическая, логическое): Включает поддержку сжатия с использованием Accept-Encoding
, когда это применимо. Когда включен HTTPS, по умолчанию — false, в противном случае — true. Отключение сжатия для HTTPS помогает снизить потенциальные риски безопасности, такие как атаки BREACH. Чтобы включить сжатие для HTTPS-трафика, явно установите http.compression
в true.
-
http.max_header_size (Статическая, строка): Максимальный общий размер всех HTTP-заголовков, разрешенный в запросе. По умолчанию — 16KB.
Расширенные транспортные настройки
OpenSearch поддерживает следующие расширенные сетевые настройки для транспортной связи:
-
transport.host (Статическая, список): Устанавливает адрес узла OpenSearch для транспортной связи. Настройка transport.host
является комбинацией transport.bind_host
и transport.publish_host
, если они имеют одинаковое значение. Альтернативой transport.host
является отдельная настройка transport.bind_host
и transport.publish_host
по мере необходимости.
-
transport.bind_host (Статическая, список): Указывает адрес или адреса, к которым узел OpenSearch привязывается для прослушивания входящих транспортных соединений.
-
transport.publish_host (Статическая, список): Указывает адрес или адреса, которые узел OpenSearch публикует для других узлов для транспортной связи.OpenSearch использует настройки HTTP для конфигурации связи с внешними клиентами через REST API и транспортные настройки для внутренней связи между узлами в OpenSearch.
Выбор транспорта
По умолчанию OpenSearch использует транспорт, предоставляемый модулем transport-netty4
, который использует движок Netty 4 как для внутренней TCP-связи между узлами в кластере, так и для внешней HTTP-связи с клиентами. Эта связь полностью асинхронна и неблокирующая. В следующей таблице перечислены другие доступные плагины транспорта, которые могут использоваться взаимозаменяемо.
Плагин |
Описание |
transport-reactor-netty4 |
HTTP-транспорт OpenSearch на основе Project Reactor и Netty 4 (экспериментальный) |
Установка
./bin/opensearch-plugin install transport-reactor-netty4
Конфигурация (с использованием opensearch.yml)
http.type: reactor-netty4
http.type: reactor-netty4-secure
4 - Настройки обнаружения и шлюза
Следующие настройки относятся к процессу обнаружения и локальному шлюзу.
Чтобы узнать больше о статических и динамических настройках, см. раздел Настройка OpenSearch.
Настройки обнаружения
Процесс обнаружения используется при формировании кластера. Он включает в себя обнаружение узлов и выбор узла-менеджера кластера. OpenSearch поддерживает следующие настройки обнаружения:
-
discovery.seed_hosts (Статическая, список): Список хостов, которые выполняют обнаружение при запуске узла. По умолчанию список хостов: ["127.0.0.1", "[::1]"]
.
-
discovery.seed_providers (Статическая, список): Указывает типы провайдеров начальных хостов, которые будут использоваться для получения адресов начальных узлов с целью запуска процесса обнаружения.
-
discovery.type (Статическая, строка): По умолчанию OpenSearch формирует кластер с несколькими узлами. Установите discovery.type
в single-node
, чтобы сформировать кластер с одним узлом.
-
cluster.initial_cluster_manager_nodes (Статическая, список): Список узлов, имеющих право быть узлами-менеджерами кластера, используемых для начальной загрузки кластера.
Настройки шлюза
Локальный шлюз хранит состояние кластера и данные шардов, которые используются при перезапуске кластера. OpenSearch поддерживает следующие настройки локального шлюза:
-
gateway.recover_after_nodes (Статическая, целое число): После полного перезапуска кластера количество узлов, которые должны присоединиться к кластеру, прежде чем может начаться восстановление.
-
gateway.recover_after_data_nodes (Статическая, целое число): После полного перезапуска кластера количество узлов данных, которые должны присоединиться к кластеру, прежде чем может начаться восстановление.
-
gateway.expected_data_nodes (Статическая, целое число): Ожидаемое количество узлов данных, которые должны существовать в кластере. После того как ожидаемое количество узлов присоединится к кластеру, может начаться восстановление локальных шардов.
-
gateway.recover_after_time (Статическая, значение времени): Количество времени, которое нужно подождать перед началом восстановления, если количество узлов данных меньше ожидаемого количества узлов данных.
5 - Настройки безопасности
Плагин безопасности предоставляет ряд файлов конфигурации YAML, которые используются для хранения необходимых настроек, определяющих, как плагин безопасности управляет пользователями, ролями и активностью внутри кластера.
Для полного списка файлов конфигурации плагина безопасности см. раздел Изменение файлов YAML.
Следующие разделы описывают настройки, связанные с безопасностью, в файле opensearch.yml
. Вы можете найти opensearch.yml
в <OPENSEARCH_HOME>/config/opensearch.yml
. Чтобы узнать больше о статических и динамических настройках, см. раздел Настройка OpenSearch.
Общие настройки
Плагин безопасности поддерживает следующие общие настройки:
-
plugins.security.nodes_dn (Статическая): Указывает список отличительных имен (DN), обозначающих другие узлы в кластере. Эта настройка поддерживает подстановочные знаки и регулярные выражения. Список DN также считывается из индекса безопасности, помимо конфигурации YAML, когда plugins.security.nodes_dn_dynamic_config_enabled
установлено в true. Если эта настройка не настроена правильно, кластер не сможет сформироваться, так как узлы не смогут доверять друг другу, что приведет к следующей ошибке: “Аутентификация транспортного клиента больше не поддерживается”.
-
plugins.security.nodes_dn_dynamic_config_enabled (Статическая): Актуально для сценариев использования кросс-кластера, где необходимо управлять разрешенными узлами DN без необходимости перезапускать узлы каждый раз, когда настраивается новый удаленный кросс-кластер. Установка nodes_dn_dynamic_config_enabled
в true включает доступные для супер-администратора API для отличительных имен, которые предоставляют средства для динамического обновления или получения узлов DN. Эта настройка имеет эффект только если plugins.security.cert.intercluster_request_evaluator_class
не установлено. По умолчанию — false.
-
plugins.security.authcz.admin_dn (Статическая): Определяет DN сертификатов, к которым должны быть назначены административные привилегии. Обязательно.
-
plugins.security.roles_mapping_resolution (Статическая): Определяет, как бэкенд-ролям сопоставляются роли безопасности. Поддерживаются следующие значения:
- MAPPING_ONLY (По умолчанию): Сопоставления должны быть явно настроены в
roles_mapping.yml
.
- BACKENDROLES_ONLY: Бэкенд-роли сопоставляются с ролями безопасности напрямую. Настройки в
roles_mapping.yml
не имеют эффекта.
- BOTH: Бэкенд-роли сопоставляются с ролями безопасности как напрямую, так и через
roles_mapping.yml
.
-
plugins.security.dls.mode (Статическая): Устанавливает режим оценки безопасности на уровне документа (DLS). По умолчанию — адаптивный. См. раздел Как установить режим оценки DLS.
-
plugins.security.compliance.salt (Статическая): Соль, используемая при генерации хеш-значения для маскирования полей. Должна содержать не менее 32 символов. Разрешены только ASCII-символы. Необязательно.
-
plugins.security.compliance.immutable_indices (Статическая): Документы в индексах, помеченных как неизменяемые, следуют парадигме “запись один раз, чтение много раз”. Документы, созданные в этих индексах, не могут быть изменены и, следовательно, являются неизменяемыми.
-
config.dynamic.http.anonymous_auth_enabled (Статическая): Включает анонимную аутентификацию. Это приведет к тому, что все HTTP-аутентификаторы не будут вызывать запросы на аутентификацию. По умолчанию — false.
-
http.detailed_errors.enabled (Статическая): Включает подробное сообщение об ошибке для REST-вызовов, выполненных против кластера OpenSearch. Если установлено в true, предоставляет root_cause
вместе с кодом ошибки. По умолчанию — true.
Настройки API управления REST
Плагин безопасности поддерживает следующие настройки API управления REST:
-
plugins.security.restapi.roles_enabled (Статическая): Включает доступ к API управления REST на основе ролей для указанных ролей. Роли разделяются запятой. По умолчанию — пустой список (ни одна роль не имеет доступа к API управления REST). См. раздел Контроль доступа для API.
-
plugins.security.restapi.endpoints_disabled.. (Статическая): Отключает конкретные конечные точки и их HTTP-методы для ролей. Значения для этой настройки составляют массив HTTP-методов. Например: plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"]
. По умолчанию все конечные точки и методы разрешены. Существующие конечные точки включают ACTIONGROUPS, CACHE, CONFIG, ROLES, ROLESMAPPING, INTERNALUSERS, SYSTEMINFO, PERMISSIONSINFO и LICENSE. См. раздел Контроль доступа для API.
-
plugins.security.restapi.password_validation_regex (Статическая): Указывает регулярное выражение для задания критериев для пароля при входе. Для получения дополнительной информации см. раздел Настройки пароля.
-
plugins.security.restapi.password_validation_error_message (Статическая): Указывает сообщение об ошибке, которое отображается, когда пароль не проходит проверку. Эта настройка используется вместе с plugins.security.restapi.password_validation_regex
.
-
plugins.security.restapi.password_min_length (Статическая): Устанавливает минимальное количество символов для длины пароля при использовании оценщика силы пароля на основе баллов. По умолчанию — 8. Это также является минимальным значением. Для получения дополнительной информации см. раздел Настройки пароля.
-
plugins.security.restapi.password_score_based_validation_strength (Статическая): Устанавливает порог для определения, является ли пароль сильным или слабым. Допустимые значения: fair, good, strong и very_strong. Эта настройка используется вместе с plugins.security.restapi.password_min_length
.
-
plugins.security.unsupported.restapi.allow_securityconfig_modification (Статическая): Включает использование методов PUT и PATCH для API конфигурации.
Расширенные настройки
Плагин безопасности поддерживает следующие расширенные настройки:
-
plugins.security.authcz.impersonation_dn (Статическая): Включает подмену на уровне транспортного слоя. Это позволяет DN выдавать себя за других пользователей. См. раздел Подмена пользователей.
-
plugins.security.authcz.rest_impersonation_user (Статическая): Включает подмену на уровне REST. Это позволяет пользователям выдавать себя за других пользователей. См. раздел Подмена пользователей.
-
plugins.security.allow_default_init_securityindex (Статическая): При установке в true OpenSearch Security автоматически инициализирует индекс конфигурации с файлами из директории /config
, если индекс не существует.
Это будет использовать известные стандартные пароли. Используйте только в частной сети/окружении.
-
plugins.security.allow_unsafe_democertificates (Статическая): При установке в true OpenSearch запускается с демонстрационными сертификатами. Эти сертификаты выданы только для демонстрационных целей.
Эти сертификаты хорошо известны и, следовательно, небезопасны для использования в производственной среде. Используйте только в частной сети/окружении.
-
plugins.security.system_indices.permission.enabled (Статическая): Включает функцию разрешений для системных индексов. При установке в true функция включена, и пользователи с разрешением на изменение ролей могут создавать роли, которые включают разрешения, предоставляющие доступ к системным индексам. При установке в false разрешение отключено, и только администраторы с административным сертификатом могут вносить изменения в системные индексы. По умолчанию разрешение установлено в false в новом кластере.
Настройки уровня эксперта
Настройки уровня эксперта должны настраиваться и развертываться только администратором, который полностью понимает данную функцию. Неправильное понимание функции может привести к рискам безопасности, неправильной работе плагина безопасности или потере данных.
Плагин безопасности поддерживает следующие настройки уровня эксперта:
-
plugins.security.config_index_name (Статическая): Имя индекса, в котором .opendistro_security хранит свою конфигурацию.
-
plugins.security.cert.oid (Статическая): Определяет идентификатор объекта (OID) сертификатов узлов сервера.
-
plugins.security.cert.intercluster_request_evaluator_class (Статическая): Указывает реализацию org.opensearch.security.transport.InterClusterRequestEvaluator
, которая используется для оценки межкластерных запросов. Экземпляры org.opensearch.security.transport.InterClusterRequestEvaluator
должны реализовывать конструктор с одним аргументом, принимающим объект org.opensearch.common.settings.Settings
.
-
plugins.security.enable_snapshot_restore_privilege (Статическая): При установке в false эта настройка отключает восстановление снимков для обычных пользователей. В этом случае принимаются только запросы на восстановление снимков, подписанные административным TLS-сертификатом. При установке в true (по умолчанию) обычные пользователи могут восстанавливать снимки, если у них есть привилегии cluster:admin/snapshot/restore
, indices:admin/create
и indices:data/write/index
.
Снимок можно восстановить только в том случае, если он не содержит глобального состояния и не восстанавливает индекс .opendistro_security.
-
plugins.security.check_snapshot_restore_write_privileges (Статическая): При установке в false дополнительные проверки индекса пропускаются. При установке по умолчанию в true попытки восстановить снимки оцениваются на наличие привилегий indices:admin/create
и indices:data/write/index
.
-
plugins.security.cache.ttl_minutes (Статическая): Определяет, как долго кэш аутентификации будет действителен. Кэш аутентификации помогает ускорить аутентификацию, временно храня объекты пользователей, возвращаемые из бэкенда, чтобы плагин безопасности не требовал повторных запросов к ним. Установите значение в минутах. По умолчанию — 60. Отключите кэширование, установив значение в 0.
-
plugins.security.disabled (Статическая): Отключает OpenSearch Security.
Отключение этого плагина может подвергнуть вашу конфигурацию (включая пароли) публичному доступу.
-
plugins.security.protected_indices.enabled (Статическая): Если установлено в true, включает защищенные индексы. Защищенные индексы более безопасны, чем обычные индексы. Эти индексы требуют роли для доступа, как и любой другой традиционный индекс, и требуют дополнительной роли для видимости. Эта настройка используется вместе с настройками plugins.security.protected_indices.roles
и plugins.security.protected_indices.indices
.
-
plugins.security.protected_indices.roles (Статическая): Указывает список ролей, к которым пользователь должен быть сопоставлен для доступа к защищенным индексам.
-
plugins.security.protected_indices.indices (Статическая): Указывает список индексов, которые следует пометить как защищенные. Эти индексы будут видны только пользователям, сопоставленным с ролями, указанными в plugins.security.protected_indices.roles
. После выполнения этого требования пользователю все равно потребуется быть сопоставленным с традиционной ролью, используемой для предоставления разрешения на доступ к индексу.
-
plugins.security.system_indices.enabled (Статическая): Если установлено в true, включает системные индексы. Системные индексы аналогичны индексу безопасности, за исключением того, что их содержимое не зашифровано. Индексы, настроенные как системные индексы, могут быть доступны либо супер-администратором, либо пользователем с ролью, включающей разрешение на системный индекс. Для получения дополнительной информации о системных индексах см. раздел Системные индексы.
-
plugins.security.system_indices.indices (Статическая): Список индексов, которые будут использоваться как системные индексы. Эта настройка контролируется настройкой plugins.security.system_indices.enabled
.
-
plugins.security.allow_default_init_securityindex (Статическая): При установке в true устанавливает плагин безопасности в его стандартные настройки безопасности, если попытка создать индекс безопасности завершается неудачей при запуске OpenSearch. Стандартные настройки безопасности хранятся в YAML-файлах, находящихся в директории opensearch-project/security/config
. По умолчанию — false.
-
plugins.security.cert.intercluster_request_evaluator_class (Статическая): Класс, который будет использоваться для оценки межкластерной связи.
-
plugins.security.enable_snapshot_restore_privilege (Статическая): Включает предоставление привилегии восстановления снимков. Необязательно. По умолчанию — true.
-
plugins.security.check_snapshot_restore_write_privileges (Статическая): Обеспечивает оценку привилегий записи при создании снимков. По умолчанию — true.
Если вы измените любое из следующих свойств хеширования паролей, вам необходимо повторно хешировать все внутренние пароли для обеспечения совместимости и безопасности.
-
plugins.security.password.hashing.algorithm (Статическая): Указывает алгоритм хеширования паролей, который следует использовать. Поддерживаются следующие значения:
- BCrypt (По умолчанию)
- PBKDF2
- Argon2
-
plugins.security.password.hashing.bcrypt.rounds (Статическая): Указывает количество раундов, используемых для хеширования паролей с помощью BCrypt. Допустимые значения находятся в диапазоне от 4 до 31, включая. По умолчанию — 12.
-
plugins.security.password.hashing.bcrypt.minor (Статическая): Указывает минорную версию алгоритма BCrypt, используемую для хеширования паролей. Поддерживаются следующие значения:
-
plugins.security.password.hashing.pbkdf2.function (Статическая): Указывает псевдослучайную функцию, применяемую к паролю. Поддерживаются следующие значения:
- SHA1
- SHA224
- SHA256 (По умолчанию)
- SHA384
- SHA512
-
plugins.security.password.hashing.pbkdf2.iterations (Статическая): Указывает количество раз, которое псевдослучайная функция применяется к паролю. По умолчанию — 600,000.
-
plugins.security.password.hashing.pbkdf2.length (Статическая): Указывает желаемую длину окончательного производного ключа. По умолчанию — 256.
-
plugins.security.password.hashing.argon2.iterations (Статическая): Указывает количество проходов по памяти, которые выполняет алгоритм. Увеличение этого значения увеличивает время вычислений на ЦП и улучшает устойчивость к атакам грубой силы. По умолчанию — 3.
-
plugins.security.password.hashing.argon2.memory (Статическая): Указывает количество памяти (в кибибайтах), используемой во время хеширования. По умолчанию — 65536 (64 МиБ).
-
plugins.security.password.hashing.argon2.parallelism (Статическая): Указывает количество параллельных потоков, используемых для вычислений. По умолчанию — 1.
-
plugins.security.password.hashing.argon2.length (Статическая): Указывает длину (в байтах) результирующего хеш-выхода. По умолчанию — 32.
-
plugins.security.password.hashing.argon2.type (Статическая): Указывает, какой вариант Argon2 использовать. Поддерживаются следующие значения:
- Argon2i
- Argon2d
- Argon2id (по умолчанию)
-
plugins.security.password.hashing.argon2.version (Статическая): Указывает, какую версию Argon2 использовать. Поддерживаются следующие значения:
Настройки журнала аудита
Плагин безопасности поддерживает следующие настройки журнала аудита:
-
plugins.security.audit.enable_rest (Динамическая): Включает или отключает ведение журнала REST-запросов. По умолчанию установлено в true (включено).
-
plugins.security.audit.enable_transport (Динамическая): Включает или отключает ведение журнала запросов на уровне транспорта. По умолчанию установлено в false (выключено).
-
plugins.security.audit.resolve_bulk_requests (Динамическая): Включает или отключает ведение журнала пакетных запросов. При включении все подзапросы в пакетных запросах также записываются в журнал. По умолчанию установлено в false (выключено).
-
plugins.security.audit.config.disabled_categories (Динамическая): Отключает указанные категории событий.
-
plugins.security.audit.ignore_requests (Динамическая): Исключает указанные запросы из ведения журнала. Поддерживает подстановочные знаки и регулярные выражения, содержащие действия или пути REST-запросов.
-
plugins.security.audit.threadpool.size (Статическая): Определяет количество потоков в пуле потоков, используемом для ведения журнала событий. По умолчанию установлено в 10. Установка этого значения в 0 отключает пул потоков, что означает, что плагин ведет журнал событий синхронно.
-
plugins.security.audit.threadpool.max_queue_len (Статическая): Устанавливает максимальную длину очереди на поток. По умолчанию установлено в 100000.
-
plugins.security.audit.ignore_users (Динамическая): Массив пользователей. Запросы аудита от пользователей в списке не будут записываться в журнал.
-
plugins.security.audit.type (Статическая): Назначение событий журнала аудита. Допустимые значения: internal_opensearch, external_opensearch, debug и webhook.
-
plugins.security.audit.config.http_endpoints (Статическая): Список конечных точек для localhost.
-
plugins.security.audit.config.index (Статическая): Индекс журнала аудита. По умолчанию установлен auditlog6. Индекс может быть статическим или индексом, который включает дату, чтобы он вращался ежедневно, например, “‘auditlog6-‘YYYY.MM.dd”. В любом случае убедитесь, что индекс защищен должным образом.
-
plugins.security.audit.config.type (Статическая): Укажите тип журнала аудита как auditlog.
-
plugins.security.audit.config.username (Статическая): Имя пользователя для конфигурации журнала аудита.
-
plugins.security.audit.config.password (Статическая): Пароль для конфигурации журнала аудита.
-
plugins.security.audit.config.enable_ssl (Статическая): Включает или отключает SSL для ведения журнала аудита.
-
plugins.security.audit.config.verify_hostnames (Статическая): Включает или отключает проверку имени хоста для SSL/TLS сертификатов. По умолчанию установлено в true (включено).
-
plugins.security.audit.config.enable_ssl_client_auth (Статическая): Включает или отключает аутентификацию клиента SSL/TLS. По умолчанию установлено в false (выключено).
-
plugins.security.audit.config.cert_alias (Статическая): Псевдоним для сертификата, используемого для доступа к журналу аудита.
-
plugins.security.audit.config.pemkey_filepath (Статическая): Относительный путь к файлу ключа Privacy Enhanced Mail (PEM), используемого для ведения журнала аудита.
-
plugins.security.audit.config.pemkey_content (Статическая): Содержимое PEM-ключа, закодированное в base64, используемого для ведения журнала аудита. Это альтернатива …config.pemkey_filepath.
-
plugins.security.audit.config.pemkey_password (Статическая): Пароль для частного ключа в формате PEM, используемого клиентом.
-
plugins.security.audit.config.pemcert_filepath (Статическая): Относительный путь к файлу PEM-сертификата, используемого для ведения журнала аудита.
-
plugins.security.audit.config.pemcert_content (Статическая): Содержимое PEM-сертификата, закодированное в base64, используемого для ведения журнала аудита. Это альтернатива указанию пути к файлу с помощью …config.pemcert_filepath.
-
plugins.security.audit.config.pemtrustedcas_filepath (Статическая): Относительный путь к файлу доверенного корневого центра сертификации.
-
plugins.security.audit.config.pemtrustedcas_content (Статическая): Содержимое корневого центра сертификации, закодированное в base64. Это альтернатива …config.pemtrustedcas_filepath.
-
plugins.security.audit.config.webhook.url (Статическая): URL вебхука.
-
plugins.security.audit.config.webhook.format (Статическая): Формат, используемый для вебхука. Допустимые значения: URL_PARAMETER_GET, URL_PARAMETER_POST, TEXT, JSON и SLACK.
-
plugins.security.audit.config.webhook.ssl.verify (Статическая): Включает или отключает проверку любых SSL/TLS сертификатов, отправленных с любым запросом вебхука. По умолчанию установлено в true (включено).
-
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath (Статическая): Относительный путь к файлу доверенного центра сертификации, против которого проверяются запросы вебхука.
-
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content (Статическая): Содержимое центра сертификации, используемого для проверки запросов вебхука, закодированное в base64. Это альтернатива …config.pemtrustedcas_filepath.
-
plugins.security.audit.config.log4j.logger_name (Статическая): Пользовательское имя для логгера Log4j.
-
plugins.security.audit.config.log4j.level (Статическая): Устанавливает уровень журнала по умолчанию для логгера Log4j. Допустимые значения: OFF, FATAL, ERROR, WARN, INFO, DEBUG, TRACE и ALL. По умолчанию установлено в INFO.
-
opendistro_security.audit.config.disabled_rest_categories (Динамическая): Список категорий REST, которые будут игнорироваться логгером. Допустимые значения: AUTHENTICATED и GRANTED_PRIVILEGES.
-
opendistro_security.audit.config.disabled_transport_categories (Динамическая): Список категорий на транспортном уровне, которые будут игнорироваться логгером. Допустимые значения: AUTHENTICATED и GRANTED_PRIVILEGES.
Настройки проверки имени хоста и DNS
Плагин безопасности поддерживает следующие настройки проверки имени хоста и DNS:
-
plugins.security.ssl.transport.enforce_hostname_verification (Статическая): Указывает, следует ли проверять имена хостов на транспортном уровне. Необязательно. По умолчанию установлено в true.
-
plugins.security.ssl.transport.resolve_hostname (Статическая): Указывает, следует ли разрешать имена хостов через DNS на транспортном уровне. Необязательно. По умолчанию установлено в true. Работает только если включена проверка имени хоста.
Для получения дополнительной информации см. раздел Проверка имени хоста и разрешение DNS.
Настройки аутентификации клиента
Плагин безопасности поддерживает следующую настройку аутентификации клиента:
- plugins.security.ssl.http.clientauth_mode (Статическая): Режим аутентификации клиента TLS, который следует использовать. Допустимые значения: OPTIONAL (по умолчанию), REQUIRE и NONE. Необязательно.
Для получения дополнительной информации см. раздел Аутентификация клиента.
Настройки включенных шифров и протоколов
Плагин безопасности поддерживает следующие настройки включенных шифров и протоколов. Каждая настройка должна быть выражена в массиве:
-
plugins.security.ssl.http.enabled_ciphers (Статическая): Включенные шифры TLS для REST-уровня. Поддерживается только формат Java.
-
plugins.security.ssl.http.enabled_protocols (Статическая): Включенные протоколы TLS для REST-уровня. Поддерживается только формат Java.
-
plugins.security.ssl.transport.enabled_ciphers (Статическая): Включенные шифры TLS для транспортного уровня. Поддерживается только формат Java.
-
plugins.security.ssl.transport.enabled_protocols (Статическая): Включенные протоколы TLS для транспортного уровня. Поддерживается только формат Java.
Для получения дополнительной информации см. раздел Включенные шифры и протоколы.
Файлы хранилища ключей и доверенных сертификатов — настройки TLS на транспортном уровне
Плагин безопасности поддерживает следующие настройки хранилища ключей и доверенных сертификатов для транспортного уровня TLS:
-
plugins.security.ssl.transport.keystore_type (Статическая): Тип файла хранилища ключей. Необязательно. Допустимые значения: JKS или PKCS12/PFX. По умолчанию установлено в JKS.
-
plugins.security.ssl.transport.keystore_filepath (Статическая): Путь к файлу хранилища ключей, который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.transport.keystore_alias (Статическая): Имя псевдонима хранилища ключей. Необязательно. По умолчанию используется первый псевдоним.
-
plugins.security.ssl.transport.keystore_password (Статическая): Пароль для хранилища ключей. По умолчанию установлено в changeit.
-
plugins.security.ssl.transport.truststore_type (Статическая): Тип файла доверенного хранилища. Необязательно. Допустимые значения: JKS или PKCS12/PFX. По умолчанию установлено в JKS.
-
plugins.security.ssl.transport.truststore_filepath (Статическая): Путь к файлу доверенного хранилища, который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.transport.truststore_alias (Статическая): Имя псевдонима доверенного хранилища. Необязательно. По умолчанию используются все сертификаты.
-
plugins.security.ssl.transport.truststore_password (Статическая): Пароль для доверенного хранилища. По умолчанию установлено в changeit.
Для получения дополнительной информации о файлах хранилища ключей и доверенных сертификатов см. раздел TLS на транспортном уровне.
Файлы хранилища ключей и доверенных сертификатов — настройки TLS на уровне REST
Плагин безопасности поддерживает следующие настройки хранилища ключей и доверенных сертификатов для уровня REST TLS:
-
plugins.security.ssl.http.enabled (Статическая): Указывает, следует ли включить TLS на уровне REST. Если включено, разрешен только HTTPS. Необязательно. По умолчанию установлено в false.
-
plugins.security.ssl.http.keystore_type (Статическая): Тип файла хранилища ключей. Необязательно. Допустимые значения: JKS или PKCS12/PFX. По умолчанию установлено в JKS.
-
plugins.security.ssl.http.keystore_filepath (Статическая): Путь к файлу хранилища ключей, который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.http.keystore_alias (Статическая): Имя псевдонима хранилища ключей. Необязательно. По умолчанию используется первый псевдоним.
-
plugins.security.ssl.http.keystore_password (Статическая): Пароль для хранилища ключей. По умолчанию установлено в changeit.
-
plugins.security.ssl.http.truststore_type (Статическая): Тип файла доверенного хранилища. Необязательно. Допустимые значения: JKS или PKCS12/PFX. По умолчанию установлено в JKS.
-
plugins.security.ssl.http.truststore_filepath (Статическая): Путь к файлу доверенного хранилища, который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.http.truststore_alias (Статическая): Имя псевдонима доверенного хранилища. Необязательно. По умолчанию используются все сертификаты.
-
plugins.security.ssl.http.truststore_password (Статическая): Пароль для доверенного хранилища. По умолчанию установлено в changeit.
Для получения дополнительной информации см. раздел TLS на уровне REST.
X.509 PEM-сертификаты и ключи PKCS #8 — настройки TLS на транспортном уровне
Плагин безопасности поддерживает следующие настройки TLS на транспортном уровне, связанные с X.509 PEM-сертификатами и ключами PKCS #8:
-
plugins.security.ssl.transport.pemkey_filepath (Статическая): Путь к файлу ключа сертификата (PKCS #8), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.transport.pemkey_password (Статическая): Пароль для ключа. Укажите эту настройку, если у ключа есть пароль. Необязательно.
-
plugins.security.ssl.transport.pemcert_filepath (Статическая): Путь к цепочке сертификатов узла X.509 (формат PEM), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.transport.pemtrustedcas_filepath (Статическая): Путь к корневым центрам сертификации (формат PEM), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
Для получения дополнительной информации см. раздел TLS на транспортном уровне.
X.509 PEM-сертификаты и ключи PKCS #8 — настройки TLS на уровне REST
Плагин безопасности поддерживает следующие настройки TLS на уровне REST, связанные с X.509 PEM-сертификатами и ключами PKCS #8:
-
plugins.security.ssl.http.enabled (Статическая): Указывает, следует ли включить TLS на уровне REST. Если включено, разрешен только HTTPS. Необязательно. По умолчанию установлено в false.
-
plugins.security.ssl.http.pemkey_filepath (Статическая): Путь к файлу ключа сертификата (PKCS #8), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.http.pemkey_password (Статическая): Пароль для ключа. Укажите эту настройку, если у ключа есть пароль. Необязательно.
-
plugins.security.ssl.http.pemcert_filepath (Статическая): Путь к цепочке сертификатов узла X.509 (формат PEM), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
-
plugins.security.ssl.http.pemtrustedcas_filepath (Статическая): Путь к корневым центрам сертификации (формат PEM), который должен находиться в каталоге конфигурации и указываться с использованием относительного пути. Обязательно.
Для получения дополнительной информации см. раздел TLS на уровне REST.
Настройки безопасности на транспортном уровне
Плагин безопасности поддерживает следующие настройки безопасности на транспортном уровне:
-
plugins.security.ssl.transport.enabled (Статическая): Указывает, следует ли включить TLS на уровне REST.
-
plugins.security.ssl.transport.client.pemkey_password (Статическая): Пароль для частного ключа в формате PEM, используемого клиентом на транспортном уровне.
-
plugins.security.ssl.transport.keystore_keypassword (Статическая): Пароль для ключа внутри хранилища ключей.
-
plugins.security.ssl.transport.server.keystore_keypassword (Статическая): Пароль для ключа внутри хранилища ключей сервера.
-
plugins.security.ssl.transport.server.keystore_alias (Статическая): Имя псевдонима для хранилища ключей сервера.
-
plugins.security.ssl.transport.client.keystore_alias (Статическая): Имя псевдонима для хранилища ключей клиента.
-
plugins.security.ssl.transport.server.truststore_alias (Статическая): Имя псевдонима для доверенного хранилища сервера.
-
plugins.security.ssl.transport.client.truststore_alias (Статическая): Имя псевдонима для доверенного хранилища клиента.
-
plugins.security.ssl.client.external_context_id (Статическая): Предоставляет клиенту на транспортном уровне идентификатор для использования внешнего SSL-контекста.
-
plugins.security.ssl.transport.principal_extractor_class (Статическая): Указывает класс, реализующий извлечение, чтобы использовать пользовательскую часть сертификата в качестве основного.
-
plugins.security.ssl.http.crl.file_path (Статическая): Путь к файлу списка отозванных сертификатов (CRL).
-
plugins.security.ssl.http.crl.validate (Статическая): Включает проверку списка отозванных сертификатов (CRL). По умолчанию установлено в false (выключено).
-
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp (Статическая): Указывает, следует ли предпочитать запись сертификата CRL перед записью протокола статуса сертификата в режиме онлайн (OCSP), если сертификат содержит обе записи. Необязательно. По умолчанию установлено в false.
-
plugins.security.ssl.http.crl.check_only_end_entities (Статическая): Если установлено в true, проверяются только конечные сертификаты. По умолчанию установлено в true.
-
plugins.security.ssl.http.crl.disable_ocsp (Статическая): Отключает OCSP. По умолчанию установлено в false (OCSP включен).
-
plugins.security.ssl.http.crl.disable_crldp (Статическая): Отключает конечные точки CRL в сертификатах. По умолчанию установлено в false (конечные точки CRL включены).
-
plugins.security.ssl.allow_client_initiated_renegotiation (Статическая): Включает или отключает повторнуюNegotiation, инициированную клиентом. По умолчанию установлено в false (повторнаяNegotiation, инициированная клиентом, не разрешена).
Примеры настроек плагина безопасности
# Common configuration settings
plugins.security.nodes_dn:
- "CN=*.example.com, OU=SSL, O=Test, L=Test, C=DE"
- "CN=node.other.com, OU=SSL, O=Test, L=Test, C=DE"
- "CN=node.example.com, OU=SSL\\, Inc., L=Test, C=DE" # escape additional comma with `\\`
plugins.security.authcz.admin_dn:
- CN=kirk,OU=client,O=client,L=test, C=de
plugins.security.roles_mapping_resolution: MAPPING_ONLY
plugins.security.ssl.transport.pemcert_filepath: esnode.pem
plugins.security.ssl.transport.pemkey_filepath: esnode-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: root-ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: esnode.pem
plugins.security.ssl.http.pemkey_filepath: esnode-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: root-ca.pem
plugins.security.allow_unsafe_democertificates: true
plugins.security.allow_default_init_securityindex: true
plugins.security.nodes_dn_dynamic_config_enabled: false
plugins.security.cert.intercluster_request_evaluator_class: # need example value for this.
plugins.security.audit.type: internal_opensearch
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.roles_enabled: ["all_access", "security_rest_api_access"]
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-anomaly-checkpoints", ".opendistro-anomaly-detection-state", ".opendistro-reports-*", ".opendistro-notifications-*", ".opendistro-notebooks", ".opendistro-asynchronous-search-response*"]
node.max_local_storage_nodes: 3
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "Password must be minimum 8 characters long and must contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.allow_default_init_securityindex: true
plugins.security.cache.ttl_minutes: 60
#
# REST Management API configuration settings
plugins.security.restapi.roles_enabled: ["all_access","xyz_role"]
plugins.security.restapi.endpoints_disabled.all_access.ACTIONGROUPS: ["PUT","POST","DELETE"] # Alternative example: plugins.security.restapi.endpoints_disabled.xyz_role.LICENSE: ["DELETE"] #
# Audit log configuration settings
plugins.security.audit.enable_rest: true
plugins.security.audit.enable_transport: false
plugins.security.audit.resolve_bulk_requests: false
plugins.security.audit.config.disabled_categories: ["AUTHENTICATED","GRANTED_PRIVILEGES"]
plugins.security.audit.ignore_requests: ["indices:data/read/*","*_bulk"]
plugins.security.audit.threadpool.size: 10
plugins.security.audit.threadpool.max_queue_len: 100000
plugins.security.audit.ignore_users: ['kibanaserver','some*user','/also.*regex possible/']
plugins.security.audit.type: internal_opensearch
#
# external_opensearch settings
plugins.security.audit.config.http_endpoints: ['localhost:9200','localhost:9201','localhost:9202']
plugins.security.audit.config.index: "'auditlog6-'2023.06.15"
plugins.security.audit.config.type: auditlog
plugins.security.audit.config.username: auditloguser
plugins.security.audit.config.password: auditlogpassword
plugins.security.audit.config.enable_ssl: false
plugins.security.audit.config.verify_hostnames: false
plugins.security.audit.config.enable_ssl_client_auth: false
plugins.security.audit.config.cert_alias: mycert
plugins.security.audit.config.pemkey_filepath: key.pem
plugins.security.audit.config.pemkey_content: <...pem base 64 content>
plugins.security.audit.config.pemkey_password: secret
plugins.security.audit.config.pemcert_filepath: cert.pem
plugins.security.audit.config.pemcert_content: <...pem base 64 content>
plugins.security.audit.config.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.pemtrustedcas_content: <...pem base 64 content>
#
# Webhook settings
plugins.security.audit.config.webhook.url: "http://mywebhook/endpoint"
plugins.security.audit.config.webhook.format: JSON
plugins.security.audit.config.webhook.ssl.verify: false
plugins.security.audit.config.webhook.ssl.pemtrustedcas_filepath: ca.pem
plugins.security.audit.config.webhook.ssl.pemtrustedcas_content: <...pem base 64 content>
#
# log4j settings
plugins.security.audit.config.log4j.logger_name: auditlogger
plugins.security.audit.config.log4j.level: INFO
#
# Advanced configuration settings
plugins.security.authcz.impersonation_dn:
"CN=spock,OU=client,O=client,L=Test,C=DE":
- worf
"cn=webuser,ou=IT,ou=IT,dc=company,dc=com":
- user2
- user1
plugins.security.authcz.rest_impersonation_user:
"picard":
- worf
"john":
- steve
- martin
plugins.security.allow_default_init_securityindex: false
plugins.security.allow_unsafe_democertificates: false
plugins.security.cache.ttl_minutes: 60
plugins.security.restapi.password_validation_regex: '(?=.*[A-Z])(?=.*[^a-zA-Z\d])(?=.*[0-9])(?=.*[a-z]).{8,}'
plugins.security.restapi.password_validation_error_message: "A password must be at least 8 characters long and contain at least one uppercase letter, one lowercase letter, one digit, and one special character."
plugins.security.restapi.password_min_length: 8
plugins.security.restapi.password_score_based_validation_strength: very_strong
#
# Advanced SSL settings - use only if you understand SSL ins and outs
plugins.security.ssl.transport.client.pemkey_password: superSecurePassword1
plugins.security.ssl.transport.keystore_keypassword: superSecurePassword2
plugins.security.ssl.transport.server.keystore_keypassword: superSecurePassword3
plugins.security.ssl.http.keystore_keypassword: superSecurePassword4
plugins.security.ssl.http.clientauth_mode: REQUIRE
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.server.keystore_alias: my_alias
plugins.security.ssl.transport.client.keystore_alias: my_other_alias
plugins.security.ssl.transport.server.truststore_alias: trustore_alias_1
plugins.security.ssl.transport.client.truststore_alias: trustore_alias_2
plugins.security.ssl.client.external_context_id: my_context_id
plugins.security.ssl.transport.principal_extractor_class: org.opensearch.security.ssl.ExampleExtractor
plugins.security.ssl.http.crl.file_path: ssl/crl/revoked.crl
plugins.security.ssl.http.crl.validate: true
plugins.security.ssl.http.crl.prefer_crlfile_over_ocsp: true
plugins.security.ssl.http.crl.check_only_end_entitites: false
plugins.security.ssl.http.crl.disable_ocsp: true
plugins.security.ssl.http.crl.disable_crldp: true
plugins.security.ssl.allow_client_initiated_renegotiation: true
#
# Expert settings - use only if you understand their use completely: accidental values can potentially cause security risks or failures to OpenSearch Security.
plugins.security.config_index_name: .opendistro_security
plugins.security.cert.oid: '1.2.3.4.5.5'
plugins.security.cert.intercluster_request_evaluator_class: org.opensearch.security.transport.DefaultInterClusterRequestEvaluator
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.cache.ttl_minutes: 60
plugins.security.disabled: false
plugins.security.protected_indices.enabled: true
plugins.security.protected_indices.roles: ['all_access']
plugins.security.protected_indices.indices: []
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: ['.opendistro-alerting-config', '.opendistro-ism-*', '.opendistro-reports-*', '.opensearch-notifications-*', '.opensearch-notebooks', '.opensearch-observability', '.opendistro-asynchronous-search-response*', '.replication-metadata-store']
6 - Настройки предохранителей
Предохранители предотвращают возникновение ошибки Java OutOfMemoryError в OpenSearch.
Родительский предохранитель указывает общее доступное количество памяти для всех дочерних предохранителей. Дочерние предохранители указывают общее доступное количество памяти для себя.
Для получения дополнительной информации о статических и динамических настройках см. раздел Конфигурация OpenSearch.
Настройки родительского предохранителя
OpenSearch поддерживает следующие настройки родительского предохранителя:
-
indices.breaker.total.use_real_memory (Статическая, логическая): Если установлено в true, родительский предохранитель учитывает фактическое использование памяти. В противном случае родительский предохранитель учитывает количество памяти, зарезервированной дочерними предохранителями. По умолчанию установлено в true.
-
indices.breaker.total.limit (Динамическая, процент): Указывает начальный лимит памяти для родительского предохранителя. Если indices.breaker.total.use_real_memory установлено в true, по умолчанию составляет 95% кучи JVM. Если indices.breaker.total.use_real_memory установлено в false, по умолчанию составляет 70% кучи JVM.
Настройки предохранителя данных полей
Предохранитель данных полей ограничивает объем памяти кучи, необходимый для загрузки поля в кэш данных полей. OpenSearch поддерживает следующие настройки предохранителя данных полей:
-
indices.breaker.fielddata.limit (Динамическая, процент): Указывает лимит памяти для предохранителя данных полей. По умолчанию составляет 40% кучи JVM.
-
indices.breaker.fielddata.overhead (Динамическая, дробное число): Константа, на которую умножаются оценки данных полей для определения окончательной оценки. По умолчанию составляет 1.03.
Настройки предохранителя запросов
Предохранитель запросов ограничивает объем памяти, необходимый для построения структур данных, необходимых для запроса (например, при вычислении агрегатов). OpenSearch поддерживает следующие настройки предохранителя запросов:
-
indices.breaker.request.limit (Динамическая, процент): Указывает лимит памяти для предохранителя запросов. По умолчанию составляет 60% кучи JVM.
-
indices.breaker.request.overhead (Динамическая, дробное число): Константа, на которую умножаются оценки запросов для определения окончательной оценки. По умолчанию составляет 1.
Настройки предохранителя текущих запросов
Предохранитель текущих запросов ограничивает использование памяти для всех текущих входящих запросов на транспортном и HTTP-уровне. Использование памяти для запроса основано на длине содержимого запроса и включает память, необходимую для необработанного запроса и структурированного объекта, представляющего запрос. OpenSearch поддерживает следующие настройки предохранителя текущих запросов:
-
network.breaker.inflight_requests.limit (Динамическая, процент): Указывает лимит памяти для предохранителя текущих запросов. По умолчанию составляет 100% кучи JVM (таким образом, лимит использования памяти для текущего запроса определяется лимитом памяти родительского предохранителя).
-
network.breaker.inflight_requests.overhead (Динамическая, дробное число): Константа, на которую умножаются оценки текущих запросов для определения окончательной оценки. По умолчанию составляет 2.
Настройки предохранителя компиляции скриптов
Предохранитель компиляции скриптов ограничивает количество компиляций встроенных скриптов в течение временного интервала. OpenSearch поддерживает следующую настройку предохранителя компиляции скриптов:
- script.max_compilations_rate (Динамическая, ставка): Максимальное количество уникальных динамических скриптов, скомпилированных в течение временного интервала для данного контекста. По умолчанию составляет 150 каждые 5 минут (150/5m).
Настройки предохранителя регулярных выражений
Предохранитель регулярных выражений включает или отключает регулярные выражения и ограничивает их сложность. OpenSearch поддерживает следующие настройки предохранителя регулярных выражений:
-
script.painless.regex.enabled (Статическая, строка): Включает регулярные выражения в скриптах Painless. Допустимые значения:
- limited: Включает регулярные выражения и ограничивает их сложность с помощью настройки script.painless.regex.limit-factor.
- true: Включает регулярные выражения. Отключает предохранитель регулярных выражений и не ограничивает сложность регулярных выражений.
- false: Отключает регулярные выражения. Если скрипт Painless содержит регулярное выражение, возвращает ошибку.
По умолчанию установлено в limited.
-
script.painless.regex.limit-factor (Статическая, целое число): Применяется только если script.painless.regex.enabled установлено в limited. Ограничивает количество символов, которые может содержать регулярное выражение в скрипте Painless. Лимит символов рассчитывается путем умножения количества символов во входных данных скрипта на script.painless.regex.limit-factor. По умолчанию составляет 6 (таким образом, если входные данные содержат 5 символов, максимальное количество символов в регулярном выражении составляет 5 · 6 = 30).
7 - Настройка кластера
Следующие настройки относятся к кластеру OpenSearch.
Чтобы узнать больше о статических и динамических настройках, смотрите раздел Настройка OpenSearch.
Настройки маршрутизации и распределения на уровне кластера
OpenSearch поддерживает следующие настройки маршрутизации на уровне кластера и распределения шардов:
cluster.routing.allocation.enable (Динамическая, строка)
Включает или отключает распределение для определенных типов шардов.
Допустимые значения:
- all – Разрешает распределение шардов для всех типов шардов.
- primaries – Разрешает распределение шардов только для первичных шардов.
- new_primaries – Разрешает распределение шардов только для первичных шардов новых индексов.
- none – Распределение шардов не разрешено для любых индексов.
По умолчанию установлено значение all.
cluster.routing.allocation.node_concurrent_incoming_recoveries (Динамическая, целое число)
Настраивает, сколько параллельных входящих восстановлений шардов разрешено на узле. По умолчанию установлено значение 2.
cluster.routing.allocation.node_concurrent_outgoing_recoveries (Динамическая, целое число)
Настраивает, сколько параллельных исходящих восстановлений шардов разрешено на узле. По умолчанию установлено значение 2.
cluster.routing.allocation.node_concurrent_recoveries (Динамическая, строка)
Используется для установки значений cluster.routing.allocation.node_concurrent_incoming_recoveries
и cluster.routing.allocation.node_concurrent_outgoing_recoveries
на одно и то же значение.
cluster.routing.allocation.node_initial_primaries_recoveries (Динамическая, целое число)
Устанавливает количество восстановлений для нераспределенных первичных шардов после перезапуска узла. По умолчанию установлено значение 4.
cluster.routing.allocation.same_shard.host (Динамическая, логическое)
При установке в true предотвращает распределение нескольких копий шарда на разные узлы на одном хосте. По умолчанию установлено значение false.
cluster.routing.rebalance.enable (Динамическая, строка)
Включает или отключает перераспределение для определенных типов шардов.
Допустимые значения:
- all – Разрешает балансировку шардов для всех типов шардов.
- primaries – Разрешает балансировку шардов только для первичных шардов.
- replicas – Разрешает балансировку шардов только для реплик.
- none – Балансировка шардов не разрешена для любых индексов.
По умолчанию установлено значение all.
cluster.routing.allocation.allow_rebalance (Динамическая, строка)
Указывает, когда разрешено перераспределение шардов.
Допустимые значения:
- always – Всегда разрешать перераспределение.
- indices_primaries_active – Разрешать перераспределение только когда все первичные шары в кластере распределены.
- indices_all_active – Разрешать перераспределение только когда все шары в кластере распределены.
По умолчанию установлено значение indices_all_active.
cluster.routing.allocation.cluster_concurrent_rebalance (Динамическая, целое число)
Позволяет контролировать, сколько параллельных перераспределений шардов разрешено в кластере. По умолчанию установлено значение 2.
cluster.routing.allocation.balance.shard (Динамическая, число с плавающей точкой)
Определяет весовой коэффициент для общего количества шардов, распределенных на узел. По умолчанию установлено значение 0.45.
cluster.routing.allocation.balance.index (Динамическая, число с плавающей точкой)
Определяет весовой коэффициент для количества шардов на индекс, распределенных на узел. По умолчанию установлено значение 0.55.
cluster.routing.allocation.balance.threshold (Динамическая, число с плавающей точкой)
Минимальное значение оптимизации операций, которые должны быть выполнены. По умолчанию установлено значение 1.0.
cluster.routing.allocation.balance.prefer_primary (Динамическая, логическое)
При установке в true OpenSearch пытается равномерно распределить первичные шары между узлами кластера. Включение этой настройки не всегда гарантирует равное количество первичных шардов на каждом узле, особенно в случае сбоя. Изменение этой настройки на false после установки в true не вызывает перераспределение первичных шардов. По умолчанию установлено значение false.
cluster.routing.allocation.rebalance.primary.enable (Динамическая, логическое)
При установке в true OpenSearch пытается перераспределить первичные шары между узлами кластера. При включении кластер пытается поддерживать количество первичных шардов на каждом узле, с максимальным буфером, определенным настройкой cluster.routing.allocation.rebalance.primary.buffer
. Изменение этой настройки на false после установки в true не вызывает перераспределение первичных шардов. По умолчанию установлено значение false.
cluster.routing.allocation.rebalance.primary.buffer (Динамическая, число с плавающей точкой)
Определяет максимальный допустимый буфер первичных шардов между узлами, когда включена настройка cluster.routing.allocation.rebalance.primary.enable
. По умолчанию установлено значение 0.1.
cluster.routing.allocation.disk.threshold_enabled (Динамическая, логическое)
При установке в false отключает решение о распределении по диску. Это также удалит любые существующие блокировки индекса index.blocks.read_only_allow_delete
, когда отключено. По умолчанию установлено значение true.
Настройки водяных знаков дискового пространства
cluster.routing.allocation.disk.watermark.low (Динамическая, строка)
Контролирует низкий водяной знак для использования дискового пространства. При установке в процентном соотношении OpenSearch не будет распределять шары на узлы с указанным процентом использования диска. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. Эта настройка не влияет на первичные шары новых индексов, но предотвратит распределение их реплик. По умолчанию установлено значение 85%.
cluster.routing.allocation.disk.watermark.high (Динамическая, строка)
Контролирует высокий водяной знак. OpenSearch попытается переместить шары с узла, использование диска на котором превышает установленный процент. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. Эта настройка влияет на распределение всех шардов. По умолчанию установлено значение 90%.
cluster.routing.allocation.disk.watermark.flood_stage (Динамическая, строка)
Контролирует водяной знак на уровне затопления. Это последний шаг для предотвращения исчерпания дискового пространства на узлах. OpenSearch применяет блокировку индекса только для чтения (index.blocks.read_only_allow_delete
) ко всем индексам, на которых есть один или несколько шардов, распределенных на узле, и хотя бы один диск превышает уровень затопления. Блокировка индекса снимается, как только использование диска падает ниже высокого водяного знака. Это также можно указать в виде дробного значения, например, 0.85. Наконец, это можно установить в байтовом значении, например, 400mb. По умолчанию установлено значение 95%.
cluster.info.update.interval (Динамическая, единица времени)
Устанавливает, как часто OpenSearch должен проверять использование диска для каждого узла в кластере. По умолчанию установлено значение 30s.
Настройки распределения шардов по атрибутам
cluster.routing.allocation.include. (Динамическая, перечисление)
Распределяет шары на узел, атрибут которого содержит хотя бы одно из включенных значений, разделенных запятыми.
cluster.routing.allocation.require. (Динамическая, перечисление)
Распределяет шары только на узел, атрибут которого содержит все включенные значения, разделенные запятыми.
cluster.routing.allocation.exclude. (Динамическая, перечисление)
Не распределяет шары на узел, атрибут которого содержит любое из включенных значений, разделенных запятыми. Настройки распределения кластера поддерживают следующие встроенные атрибуты.
Допустимые значения:
- _name – Совпадение узлов по имени узла.
- _host_ip – Совпадение узлов по IP-адресу хоста.
- _publish_ip – Совпадение узлов по публикуемому IP-адресу.
- _ip – Совпадение по _host_ip или _publish_ip.
- _host – Совпадение узлов по имени хоста.
- _id – Совпадение узлов по идентификатору узла.
- _tier – Совпадение узлов по роли уровня данных.
Настройки перемещения шардов
cluster.routing.allocation.shard_movement_strategy (Динамическая, перечисление)
Определяет порядок, в котором шары перемещаются с исходящих узлов на входящие.
Эта настройка поддерживает следующие стратегии:
- PRIMARY_FIRST – Первичные шары перемещаются первыми, перед репликами. Эта приоритизация может помочь предотвратить переход состояния здоровья кластера в красный, если узлы, на которые перемещаются шары, выйдут из строя в процессе.
- REPLICA_FIRST – Репликационные шары перемещаются первыми, перед первичными. Эта приоритизация может помочь предотвратить переход состояния здоровья кластера в красный при выполнении перемещения шардов в кластере OpenSearch с смешанными версиями и включенной репликацией сегментов. В этой ситуации первичные шары, перемещенные на узлы OpenSearch более новой версии, могут попытаться скопировать файлы сегментов на репликационные шары более старой версии OpenSearch, что приведет к сбою шардов. Перемещение репликационных шардов первыми может помочь избежать этого в кластерах с несколькими версиями.
- NO_PREFERENCE – Поведение по умолчанию, при котором порядок перемещения шардов не имеет значения.
cluster.routing.search_replica.strict (Динамическая, логическое)
Контролирует, как маршрутизируются поисковые запросы, когда для индекса существуют репликационные шары, например, когда index.number_of_search_replicas
больше 0. Эта настройка применяется только в случае, если для индекса настроены поисковые реплики. При установке в true все поисковые запросы для таких индексов маршрутизируются только на репликационные шары. Если репликационные шары не назначены, запросы завершаются неудачей. При установке в false, если репликационные шары не назначены, запросы возвращаются к любому доступному шару. По умолчанию установлено значение true.
cluster.allocator.gateway.batch_size (Динамическая, целое число)
Ограничивает количество шардов, отправляемых на узлы данных в одной партии для получения метаданных любых нераспределенных шардов. По умолчанию установлено значение 2000.
cluster.allocator.existing_shards_allocator.batch_enabled (Статическая, логическая)
Включает пакетное распределение нераспределенных шардов, которые уже существуют на диске, вместо распределения одного шара за раз. Это снижает нагрузку на память и транспорт, получая метаданные любых нераспределенных шардов в пакетном вызове. По умолчанию установлено значение false.
cluster.routing.allocation.total_shards_per_node (Динамическая, целое число)
Максимальное общее количество первичных и репликационных шардов, которые могут быть распределены на один узел. По умолчанию установлено значение -1 (без ограничений). Помогает равномерно распределять шары по узлам, ограничивая общее количество шардов на узел. Используйте с осторожностью, так как шары могут оставаться нераспределенными, если узлы достигнут своих настроенных лимитов.
cluster.routing.allocation.total_primary_shards_per_node (Динамическая, целое число)
Максимальное количество первичных шардов, которые могут быть распределены на один узел. Эта настройка применима только для кластеров с удаленной поддержкой. По умолчанию установлено значение -1 (без ограничений). Помогает равномерно распределять первичные шары по узлам, ограничивая количество первичных шардов на узел. Используйте с осторожностью, так как первичные шары могут оставаться нераспределенными, если узлы достигнут своих настроенных лимитов.
Настройки шардов, блокировок и задач на уровне кластера
OpenSearch поддерживает следующие настройки шардов, блокировок и задач на уровне кластера:
action.search.shard_count.limit (Целое число)
Ограничивает максимальное количество шардов, которые могут быть задействованы во время поиска. Запросы, превышающие этот лимит, будут отклонены.
cluster.blocks.read_only (Логическое)
Устанавливает весь кластер в режим только для чтения. По умолчанию установлено значение false.
cluster.blocks.read_only_allow_delete (Логическое)
Похоже на cluster.blocks.read_only
, но позволяет удалять индексы.
cluster.max_shards_per_node (Целое число)
Ограничивает общее количество первичных и репликационных шардов для кластера. Лимит рассчитывается следующим образом: cluster.max_shards_per_node
умножается на количество не замороженных узлов данных. Шары для закрытых индексов не учитываются в этом лимите. По умолчанию установлено значение 1000.
cluster.persistent_tasks.allocation.enable (Строка)
Включает или отключает распределение для постоянных задач.
Допустимые значения:
- all – Разрешает назначение постоянных задач на узлы.
- none – Распределение для постоянных задач не разрешено. Это не влияет на уже работающие постоянные задачи.
По умолчанию установлено значение all.
cluster.persistent_tasks.allocation.recheck_interval (Единица времени)
Менеджер кластера автоматически проверяет, нужно ли назначать постоянные задачи, когда состояние кластера изменяется значительным образом. Существуют и другие факторы, такие как использование памяти, которые повлияют на то, будут ли постоянные задачи назначены на узлы, но не вызывают изменения состояния кластера. Эта настройка определяет, как часто выполняются проверки назначения в ответ на эти факторы. По умолчанию установлено значение 30 секунд, при этом минимальное значение составляет 10 секунд.
Настройки медленных логов на уровне кластера
Для получения дополнительной информации смотрите раздел Медленные логи запросов поиска.
cluster.search.request.slowlog.threshold.warn (Единица времени)
Устанавливает порог WARN для медленных логов на уровне запросов. По умолчанию установлено значение -1.
cluster.search.request.slowlog.threshold.info (Единица времени)
Устанавливает порог INFO для медленных логов на уровне запросов. По умолчанию установлено значение -1.
cluster.search.request.slowlog.threshold.debug (Единица времени)
Устанавливает порог DEBUG для медленных логов на уровне запросов. По умолчанию установлено значение -1.
cluster.search.request.slowlog.threshold.trace (Единица времени)
Устанавливает порог TRACE для медленных логов на уровне запросов. По умолчанию установлено значение -1.
cluster.search.request.slowlog.level (Строка)
Устанавливает минимальный уровень медленного лога для записи: WARN, INFO, DEBUG и TRACE. По умолчанию установлено значение TRACE.
Настройки индекса на уровне кластера
Для получения информации о настройках индекса на уровне индекса смотрите раздел Настройки индекса на уровне кластера.
Настройки координации на уровне кластера
OpenSearch поддерживает следующие настройки координации на уровне кластера. Все настройки в этом списке являются динамическими:
cluster.fault_detection.leader_check.timeout (Единица времени)
Количество времени, в течение которого узел ждет ответа от избранного менеджера кластера во время проверки лидера, прежде чем считать проверку неудачной. Допустимые значения от 1ms до 60s, включая. По умолчанию установлено значение 10s. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.
cluster.fault_detection.follower_check.timeout (Единица времени)
Количество времени, в течение которого избранный менеджер кластера ждет ответа во время проверки последователя, прежде чем считать проверку неудачной. Допустимые значения от 1ms до 60s, включая. По умолчанию установлено значение 10s. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.
cluster.fault_detection.follower_check.interval (Единица времени)
Количество времени, в течение которого избранный менеджер кластера ждет между отправкой проверок последователей другим узлам в кластере. Допустимые значения 100ms и выше. По умолчанию установлено значение 1000ms. Изменение этой настройки на значение, отличное от значения по умолчанию, может привести к нестабильности кластера.
cluster.follower_lag.timeout (Единица времени)
Количество времени, в течение которого избранный менеджер кластера ждет получения подтверждений обновлений состояния кластера от отстающих узлов. По умолчанию установлено значение 90s. Если узел не успешно применяет обновление состояния кластера в течение этого времени, он считается неудавшимся и удаляется из кластера.
cluster.publish.timeout (Единица времени)
Количество времени, в течение которого менеджер кластера ждет, пока каждое обновление состояния кластера будет полностью опубликовано на всех узлах, если только discovery.type
не установлен на single-node. По умолчанию установлено значение 30s.
Настройки пределов ответов CAT на уровне кластера
OpenSearch поддерживает следующие настройки пределов ответов CAT API на уровне кластера, все из которых являются динамическими:
cat.indices.response.limit.number_of_indices (Целое число)
Устанавливает предел на количество индексов, возвращаемых API CAT Indices. Значение по умолчанию -1 (без ограничений). Если количество индексов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/indices/<index-pattern>
).
cat.shards.response.limit.number_of_shards (Целое число)
Устанавливает предел на количество шардов, возвращаемых API CAT Shards. Значение по умолчанию -1 (без ограничений). Если количество шардов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/shards/<index-pattern>
).
cat.segments.response.limit.number_of_indices (Целое число)
Устанавливает предел на количество индексов, возвращаемых API CAT Segments. Значение по умолчанию -1 (без ограничений). Если количество индексов в ответе превышает этот предел, API возвращает ошибку 429. Чтобы избежать этого, вы можете указать фильтр по шаблону индекса в вашем запросе (например, _cat/segments/<index-pattern>
).
8 - Настройка индекса
Настройки индекса могут быть двух типов: настройки уровня кластера, которые влияют на все индексы в кластере, и настройки уровня индекса, которые влияют на отдельные индексы.
Чтобы узнать больше о статических и динамических настройках, смотрите Конфигурирование OpenSearch.
Настройки индекса уровня кластера
Существует два типа настроек кластера:
- Статические настройки индекса уровня кластера — это настройки, которые нельзя обновить, пока кластер работает. Чтобы обновить статическую настройку, необходимо остановить кластер, обновить настройку, а затем перезапустить кластер.
- Динамические настройки индекса уровня кластера — это настройки, которые можно обновлять в любое время.
Статические настройки индекса уровня кластера
OpenSearch поддерживает следующие статические настройки индекса уровня кластера:
-
indices.cache.cleanup_interval
(Единица времени): Запланирует периодическую фоновую задачу, которая очищает истекшие записи из кэша с указанным интервалом. По умолчанию 1m (1 минута). Для получения дополнительной информации смотрите Кэш запросов индекса.
-
indices.requests.cache.size
(Строка): Размер кэша в процентах от размера кучи (например, чтобы использовать 1% кучи, укажите 1%). По умолчанию 1%. Для получения дополнительной информации смотрите Кэш запросов индекса.
Динамические настройки индекса уровня кластера
OpenSearch поддерживает следующие динамические настройки индекса уровня кластера:
-
action.auto_create_index
(Булевый): Автоматически создает индекс, если индекс еще не существует. Также применяет любые конфигурации шаблонов индексов. По умолчанию true.
-
indices.recovery.max_concurrent_file_chunks
(Целое число): Количество частей файлов, отправляемых параллельно для каждой операции восстановления. По умолчанию 2.
-
indices.recovery.max_concurrent_operations
(Целое число): Количество операций, отправляемых параллельно для каждого восстановления. По умолчанию 1.
-
indices.recovery.max_concurrent_remote_store_streams
(Целое число): Количество потоков к удаленному репозиторию, которые могут быть открыты параллельно при восстановлении индекса из удаленного хранилища. По умолчанию 20.
-
indices.replication.max_bytes_per_sec
(Строка): Ограничивает общий входящий и исходящий трафик репликации для каждого узла. Если значение не указано в конфигурации, используется настройка indices.recovery.max_bytes_per_sec
, по умолчанию равная 40 МБ. Если вы установите значение трафика репликации меньше или равным 0 МБ, ограничение скорости будет отключено, что приведет к передаче данных репликации с максимальной возможной скоростью.
-
indices.fielddata.cache.size
(Строка): Максимальный размер кэша данных полей. Может быть указан как абсолютное значение (например, 8 ГБ) или процент от кучи узла (например, 50%). Это значение статическое, поэтому его необходимо указать в файле opensearch.yml
. Если вы не укажете эту настройку, максимальный размер будет неограниченным. Это значение должно быть меньше, чем indices.breaker.fielddata.limit
. Для получения дополнительной информации смотрите Систему защиты от переполнения кэша данных полей.
-
indices.query.bool.max_clause_count
(Целое число): Определяет максимальное произведение полей и терминов, которые могут быть запрошены одновременно. До версии OpenSearch 2.16 для применения этой статической настройки требовалась перезагрузка кластера. Теперь она динамическая, существующие пулы потоков поиска могут использовать старое статическое значение, что может привести к исключениям TooManyClauses. Новые пулы потоков используют обновленное значение. По умолчанию 1024.
-
cluster.remote_store.index.path.type
(Строка): Стратегия пути для данных, хранящихся в удаленном хранилище. Эта настройка эффективна только для кластеров с включенным удаленным хранилищем. Эта настройка поддерживает следующие значения:
fixed
: Хранит данные в структуре пути <repository_base_path>/<index_uuid>/<shard_id>/
.
hashed_prefix
: Хранит данные в структуре пути hash(<shard-data-identifier>)/<repository_base_path>/<index_uuid>/<shard_id>/
.
hashed_infix
: Хранит данные в структуре пути <repository_base_path>/hash(<shard-data-identifier>)/<index_uuid>/<shard_id>/
. shard-data-identifier
характеризуется index_uuid
, shard_id
, типом данных (translog, segments) и типом данных (data, metadata, lock_files). По умолчанию fixed
.
-
cluster.remote_store.index.path.hash_algorithm
(Строка): Хеш-функция, используемая для получения хеш-значения, когда cluster.remote_store.index.path.type
установлено на hashed_prefix
или hashed_infix
. Эта настройка эффективна только для кластеров с включенным удаленным хранилищем. Эта настройка поддерживает следующие значения:
fnv_1a_base64
: Использует хеш-функцию FNV1a и генерирует безопасное для URL 20-битное хеш-значение в формате base64.
fnv_1a_composite_1
: Использует хеш-функцию FNV1a и генерирует пользовательское закодированное хеш-значение, которое хорошо масштабируется с большинством опций удаленного хранилища. Функция FNV1a генерирует 64-битное значение. Пользовательское кодирование использует 6 старших бит для создания безопасного для URL символа base64 и следующие 14 бит для создания двоичной строки. По умолчанию fnv_1a_composite_1
.
-
cluster.remote_store.translog.transfer_timeout
(Единица времени): Управляет значением таймаута при загрузке файлов translog и контрольных точек во время синхронизации с удаленным хранилищем. Эта настройка применяется только для кластеров с включенным удаленным хранилищем. По умолчанию 30 секунд.
-
cluster.remote_store.index.segment_metadata.retention.max_count
(Целое число): Управляет минимальным количеством файлов метаданных, которые необходимо сохранить в репозитории сегментов на удаленном хранилище. Значение ниже 1 отключает удаление устаревших файлов метаданных сегментов. По умолчанию 10.
-
cluster.remote_store.segment.transfer_timeout
(Единица времени): Управляет максимальным временем ожидания обновления всех новых сегментов после обновления в удаленное хранилище. Если загрузка не завершится в течение указанного времени, будет выброшено исключение SegmentUploadFailedException. По умолчанию 30 минут. Минимальное ограничение составляет 10 минут.
-
cluster.remote_store.translog.path.prefix
(Строка): Управляет фиксированным префиксом пути для данных translog на кластере с включенным удаленным хранилищем. Эта настройка применяется только в том случае, если настройка cluster.remote_store.index.path.type
установлена на HASHED_PREFIX
или HASHED_INFIX
. По умолчанию пустая строка, “”.
-
cluster.remote_store.segments.path.prefix
(Строка): Управляет фиксированным префиксом пути для данных сегментов на кластере с включенным удаленным хранилищем. Эта настройка применяется только в том случае, если настройка cluster.remote_store.index.path.type
установлена на HASHED_PREFIX
или HASHED_INFIX
. По умолчанию пустая строка, “”.
-
cluster.snapshot.shard.path.prefix
(Строка): Управляет фиксированным префиксом пути для блобов уровня сегмента снимка. Эта настройка применяется только в том случае, если настройка repository.shard_path_type
установлена на HASHED_PREFIX
или HASHED_INFIX
. По умолчанию пустая строка, “”.
-
cluster.default_number_of_replicas
(Целое число): Управляет значением по умолчанию для количества реплик индексов в кластере. Настройка уровня индекса index.number_of_replicas
по умолчанию принимает это значение, если не настроена. По умолчанию 1.
-
cluster.thread_pool.<fixed-threadpool>.size
(Целое число): Управляет размерами как фиксированных, так и изменяемых очередей пулов потоков. Переопределяет значения по умолчанию, указанные в opensearch.yml
.
-
cluster.thread_pool.<scaling-threadpool>.max
(Целое число): Устанавливает максимальный размер пула потоков с изменяемым размером. Переопределяет значение по умолчанию, указанное в opensearch.yml
.
-
cluster.thread_pool.<scaling-threadpool>.core
(Целое число): Указывает базовый размер пула потоков с изменяемым размером. Переопределяет значение по умолчанию, указанное в opensearch.yml
.
Прежде чем настраивать параметры пула потоков динамически, обратите внимание, что это настройки для экспертов, которые могут потенциально дестабилизировать ваш кластер. Изменение настроек пула потоков применяет один и тот же размер пула потоков ко всем узлам, поэтому это не рекомендуется для кластеров с различным оборудованием для одних и тех же ролей. Аналогично, избегайте настройки пулов потоков, которые используются как узлами данных, так и узлами управления кластером. После внесения этих изменений рекомендуется следить за вашим кластером, чтобы убедиться, что он остается стабильным и работает как ожидается.
Настройки индекса уровня индекса
Вы можете указать настройки индекса при создании индекса. Существует два типа настроек индекса:
-
Статические настройки индекса уровня индекса — это настройки, которые нельзя обновить, пока индекс открыт. Чтобы обновить статическую настройку, необходимо закрыть индекс, обновить настройку, а затем снова открыть индекс.
-
Динамические настройки индекса уровня индекса — это настройки, которые можно обновлять в любое время.
Указание настройки при создании индекса
При создании индекса вы можете указать его статические или динамические настройки следующим образом:
PUT /testindex
{
"settings": {
"index.number_of_shards": 1,
"index.number_of_replicas": 2
}
}
Статические настройки индекса уровня индекса
OpenSearch поддерживает следующие статические настройки индекса уровня индекса:
-
index.number_of_shards
(Целое число): Количество первичных шардов в индексе. По умолчанию 1.
-
index.number_of_routing_shards
(Целое число): Количество шардов маршрутизации, используемых для разделения индекса.
-
index.shard.check_on_startup
(Булевый): Указывает, следует ли проверять шардов индекса на наличие повреждений. Доступные опции:
false
(не проверять на повреждения),
checksum
(проверять на физические повреждения),
true
(проверять как на физические, так и на логические повреждения).
По умолчанию false
.
-
index.codec
(Строка): Определяет, как сжимаются и хранятся на диске сохраненные поля индекса. Эта настройка влияет на размер шардов индекса и производительность операций индексации.
Допустимые значения:
default
best_compression
zstd
(OpenSearch 2.9 и позже)
zstd_no_dict
(OpenSearch 2.9 и позже)
qat_lz4
(OpenSearch 2.14 и позже, на поддерживаемых системах)
qat_deflate
(OpenSearch 2.14 и позже, на поддерживаемых системах)
Для zstd
, zstd_no_dict
, qat_lz4
и qat_deflate
вы можете указать уровень сжатия в настройке index.codec.compression_level
. Для получения дополнительной информации смотрите Настройки кодека индекса. Опционально. По умолчанию default
.
-
index.codec.compression_level
(Целое число): Настройка уровня сжатия обеспечивает компромисс между коэффициентом сжатия и скоростью. Более высокий уровень сжатия приводит к более высокому коэффициенту сжатия (меньший размер хранения), но замедляет скорость сжатия и распаковки, что приводит к увеличению задержек при индексации и поиске. Эта настройка может быть указана только если index.codec
установлен на zstd
и zstd_no_dict
в OpenSearch 2.9 и позже или qat_lz4
и qat_deflate
в OpenSearch 2.14 и позже. Допустимые значения — целые числа в диапазоне [1, 6]. Для получения дополнительной информации смотрите Настройки кодека индекса. Опционально. По умолчанию 3.
-
index.codec.qatmode
(Строка): Режим аппаратного ускорения, используемый для кодеков сжатия qat_lz4
и qat_deflate
. Допустимые значения: auto
и hardware
. Для получения дополнительной информации смотрите Настройки кодека индекса. Опционально. По умолчанию auto
.
-
index.routing_partition_size
(Целое число): Количество шардов, к которым может быть направлено значение пользовательской маршрутизации. Маршрутизация помогает несбалансированному кластеру, перемещая значения к подмножеству шардов, а не к одному шару. Чтобы включить маршрутизацию, установите это значение больше 1, но меньше index.number_of_shards
. По умолчанию 1.
-
index.soft_deletes.retention_lease.period
(Единица времени): Максимальное время хранения истории операций шара. По умолчанию 12 часов.
-
index.load_fixed_bitset_filters_eagerly
(Булевый): Указывает, должен ли OpenSearch предварительно загружать кэшированные фильтры. Доступные опции: true
и false
. По умолчанию true
.
-
index.hidden
(Булевый): Указывает, должен ли индекс быть скрытым. Скрытые индексы не возвращаются в результате запросов, содержащих подстановочные знаки. Доступные опции: true
и false
. По умолчанию false
.
-
index.merge.policy
(Строка): Эта настройка управляет политикой слияния для сегментов Lucene. Доступные опции: tiered
и log_byte_size
. По умолчанию tiered
, но для временных данных, таких как журналы событий, рекомендуется использовать политику слияния log_byte_size
, которая может улучшить производительность запросов при выполнении диапазонных запросов по полю @timestamp
. Рекомендуется не изменять политику слияния существующего индекса. Вместо этого настройте эту опцию при создании нового индекса.
-
index.merge_on_flush.enabled
(Булевый): Эта настройка управляет функцией слияния при обновлении Apache Lucene, которая направлена на уменьшение количества сегментов путем выполнения слияний при обновлении (или, в терминах OpenSearch, при сбросе). По умолчанию true
.
-
index.merge_on_flush.max_full_flush_merge_wait_time
(Единица времени): Эта настройка устанавливает время ожидания для слияний, когда index.merge_on_flush.enabled
включен. По умолчанию 10 секунд.
-
index.merge_on_flush.policy
(Строка): Эта настройка управляет тем, какая политика слияния должна использоваться, когда index.merge_on_flush.enabled
включен. По умолчанию default
.
-
index.check_pending_flush.enabled
(Булевый): Эта настройка управляет параметром checkPendingFlushOnUpdate
индексации Apache Lucene, который указывает, должен ли поток индексации проверять наличие ожидающих сбросов при обновлении, чтобы сбросить буферы индексации на диск. По умолчанию true
.
-
index.use_compound_file
(Булевый): Эта настройка управляет параметрами useCompoundFile
индексации Apache Lucene, которые указывают, будут ли новые файлы сегментов упакованы в составной файл. По умолчанию true
.
-
index.append_only.enabled
(Булевый): Установите значение true
, чтобы предотвратить любые обновления документов в индексе. По умолчанию false
.
Обновление статической настройки индекса
Вы можете обновить статическую настройку индекса только для закрытого индекса. Следующий пример демонстрирует обновление настройки кодека индекса.
Сначала закройте индекс:
Затем обновите настройки, отправив запрос к конечной точке _settings
:
PUT /testindex/_settings
{
"index": {
"codec": "zstd_no_dict",
"codec.compression_level": 3
}
}
Наконец, снова откройте индекс, чтобы включить операции чтения и записи:
Для получения дополнительной информации об обновлении настроек, включая поддерживаемые параметры запроса, смотрите Обновление настроек.
Динамические настройки индекса уровня индекса
OpenSearch поддерживает следующие динамические настройки индекса уровня индекса:
-
index.number_of_replicas
(Целое число): Количество реплик, которые должен иметь каждый первичный шард. Например, если у вас 4 первичных шарда и вы установите index.number_of_replicas
на 3, индекс будет иметь 12 реплик. Если не установлено, по умолчанию используется значение cluster.default_number_of_replicas
(по умолчанию 1).
-
index.number_of_search_replicas
(Целое число): Количество поисковых реплик, которые должен иметь каждый первичный шард. Например, если у вас 4 первичных шарда и вы установите index.number_of_search_replicas
на 3, индекс будет иметь 12 поисковых реплик. По умолчанию 0.
-
index.auto_expand_replicas
(Строка): Указывает, должен ли кластер автоматически добавлять реплики на основе количества узлов данных. Укажите нижнюю и верхнюю границы (например, 0–9) или all
для верхней границы. Например, если у вас 5 узлов данных и вы установите index.auto_expand_replicas
на 0–3, кластер не добавит еще одну реплику. Однако, если вы установите это значение на 0-all и добавите 2 узла, всего 7, кластер расширится до 6 реплик. По умолчанию отключено.
-
index.auto_expand_search_replicas
(Строка): Управляет тем, автоматически ли кластер регулирует количество поисковых реплик на основе количества доступных узлов поиска. Укажите значение в виде диапазона с нижней и верхней границей, например, 0-3 или 0-all. Если вы не укажете значение, эта функция отключена.
Например, если у вас 5 узлов данных и вы установите index.auto_expand_search_replicas
на 0-3, индекс может иметь до 3 поисковых реплик, и кластер не добавит еще одну поисковую реплику. Однако, если вы установите index.auto_expand_search_replicas
на 0-all и добавите 2 узла, всего 7, кластер расширится до 7 поисковых реплик. Эта настройка по умолчанию отключена.
-
index.search.idle.after
(Единица времени): Время, в течение которого шард должен ждать запроса поиска или получения, прежде чем перейти в состояние ожидания. По умолчанию 30 секунд.
-
index.search.default_pipeline
(Строка): Имя поискового конвейера, который используется, если при поиске индекса не установлен явный конвейер. Если установлен конвейер по умолчанию и он не существует, запросы к индексу завершатся неудачей. Используйте имя конвейера _none
, чтобы указать отсутствие конвейера поиска по умолчанию. Для получения дополнительной информации смотрите Конвейер поиска по умолчанию.
-
index.refresh_interval
(Единица времени): Как часто индекс должен обновляться, что публикует его последние изменения и делает их доступными для поиска. Может быть установлено на -1 для отключения обновления. По умолчанию 1 секунда.
-
index.max_result_window
(Целое число): Максимальное значение from + size
для запросов к индексу. from
— это начальный индекс для поиска, а size
— количество результатов для возврата. По умолчанию 10000.
-
index.max_inner_result_window
(Целое число): Максимальное значение from + size
, которое указывает количество возвращаемых вложенных результатов поиска и наиболее релевантных документов, агрегированных во время запроса. from
— это начальный индекс для поиска, а size
— количество верхних результатов для возврата. По умолчанию 100.
-
index.max_rescore_window
(Целое число): Максимальное значение window_size
для запросов пересчета к индексу. Запросы пересчета изменяют порядок документов индекса и возвращают новый балл, который может быть более точным. По умолчанию такое же, как index.max_inner_result_window
, или 10000 по умолчанию.
-
index.max_docvalue_fields_search
(Целое число): Максимальное количество docvalue_fields
, разрешенных в запросе. По умолчанию 100.
-
index.max_script_fields
(Целое число): Максимальное количество script_fields
, разрешенных в запросе. По умолчанию 32.
-
index.max_ngram_diff
(Целое число): Максимальная разница между значениями min_gram
и max_gram
для NGramTokenizer
и NGramTokenFilter
. По умолчанию 1.
-
index.max_shingle_diff
(Целое число): Максимальная разница между max_shingle_size
и min_shingle_size
, которая подается в фильтр токенов shingle
. По умолчанию 3.
-
index.max_refresh_listeners
(Целое число): Максимальное количество слушателей обновления, которые может иметь каждый шард.
-
index.analyze.max_token_count
(Целое число): Максимальное количество токенов, которые могут быть возвращены из операции API _analyze
. По умолчанию 10000.
-
index.highlight.max_analyzed_offset
(Целое число): Количество символов, которые может анализировать запрос на выделение. По умолчанию 1000000.
-
index.max_terms_count
(Целое число): Максимальное количество терминов, которые может принять запрос терминов. По умолчанию 65536.
-
index.max_regex_length
(Целое число): Максимальная длина символов регулярного выражения, которое может быть в запросе regexp
. По умолчанию 1000.
-
index.query.default_field
(Список): Поле или список полей, которые OpenSearch использует в запросах, если поле не указано в параметрах.
-
index.query.max_nested_depth
(Целое число): Максимальное количество уровней вложенности для вложенных запросов. По умолчанию 20. Минимум 1 (один вложенный запрос).
-
index.requests.cache.enable
(Булевый): Включает или отключает кэш запросов индекса. По умолчанию true
. Для получения дополнительной информации смотрите Кэш запросов индекса.
-
index.routing.allocation.enable
(Строка): Указывает параметры для распределения шардов индекса. Доступные опции:
all
(разрешить распределение для всех шардов),
primaries
(разрешить распределение только для первичных шардов),
new_primaries
(разрешить распределение только для новых первичных шардов),
none
(не разрешать распределение).
По умолчанию all
.
-
index.routing.rebalance.enable
(Строка): Включает перераспределение шардов для индекса. Доступные опции:
all
(разрешить перераспределение для всех шардов),
primaries
(разрешить перераспределение только для первичных шардов),
replicas
(разрешить перераспределение только для реплик),
none
(не разрешать перераспределение).
По умолчанию all
.
-
index.gc_deletes
(Единица времени): Время хранения номера версии удаленного документа. По умолчанию 60 секунд.
-
index.default_pipeline
(Строка): Конвейер узла обработки по умолчанию для индекса. Если установлен конвейер по умолчанию и он не существует, запросы к индексу завершатся неудачей. Имя конвейера _none
указывает на то, что у индекса нет конвейера обработки.
-
index.final_pipeline
(Строка): Конечный конвейер узла обработки для индекса. Если установлен конечный конвейер и он не существует, запросы к индексу завершатся неудачей. Имя конвейера _none
указывает на то, что у индекса нет конвейера обработки.
-
index.optimize_doc_id_lookup.fuzzy_set.enabled
(Булевый): Эта настройка управляет тем, следует ли включать fuzzy_set
для оптимизации поиска идентификаторов документов в индексах или запросах, используя дополнительную структуру данных, в данном случае структуру данных Bloom filter. Включение этой настройки улучшает производительность операций upsert
и поиска, которые зависят от идентификаторов документов, создавая новую структуру данных (Bloom filter). Bloom filter позволяет обрабатывать отрицательные случаи (то есть идентификаторы, отсутствующие в существующем индексе) с помощью более быстрых обращений вне кучи. Обратите внимание, что создание Bloom filter требует дополнительного использования кучи во время индексации. По умолчанию false
.
-
index.optimize_doc_id_lookup.fuzzy_set.false_positive_probability
(Число с плавающей точкой)
Устанавливает вероятность ложного срабатывания для базового fuzzy_set
(то есть, фильтра Блума). Более низкая вероятность ложного срабатывания обеспечивает более высокую пропускную способность для операций upsert
и get
, но приводит к увеличению использования памяти и хранилища. Допустимые значения находятся в диапазоне от 0.01 до 0.50. По умолчанию установлено значение 0.20.
index.routing.allocation.total_shards_per_node
(Целое число)
Максимальное общее количество первичных и репликационных шардов из одного индекса, которые могут быть распределены на один узел. По умолчанию установлено значение -1 (без ограничений). Помогает контролировать распределение шардов по узлам для каждого индекса, ограничивая количество шардов на узел. Используйте с осторожностью, так как шары из этого индекса могут оставаться нераспределенными, если узлы достигнут своих настроенных лимитов.
index.routing.allocation.total_primary_shards_per_node
(Целое число)
Максимальное количество первичных шардов из одного индекса, которые могут быть распределены на один узел. Эта настройка применима только для кластеров с удаленной поддержкой. По умолчанию установлено значение -1 (без ограничений). Помогает контролировать распределение первичных шардов по узлам для каждого индекса, ограничивая количество первичных шардов на узел. Используйте с осторожностью, так как первичные шары из этого индекса могут оставаться нераспределенными, если узлы достигнут своих настроенных лимитов.
Обновление динамической настройки индекса
Вы можете обновить динамическую настройку индекса в любое время через API. Например, чтобы обновить интервал обновления, используйте следующий запрос:
PUT /testindex/_settings
{
"index": {
"refresh_interval": "2s"
}
}
Для получения дополнительной информации об обновлении настроек, включая поддерживаемые параметры запроса, смотрите раздел Обновление настроек.
9 - Настройки поиска
OpenSearch поддерживает следующие настройки поиска
-
search.max_buckets (Динамическое, целое число): Максимальное количество агрегатных бакетов, разрешенных в одном ответе. По умолчанию 65535.
-
search.phase_took_enabled (Динамическое, логическое): Включает возврат значений времени на уровне фаз в ответах на поиск. По умолчанию false.
-
search.allow_expensive_queries (Динамическое, логическое): Разрешает или запрещает дорогостоящие запросы. Для получения дополнительной информации см. Дорогостоящие запросы.
-
search.default_allow_partial_results (Динамическое, логическое): Настройка на уровне кластера, которая позволяет возвращать частичные результаты поиска, если запрос превышает время ожидания или если шард не отвечает. Если запрос на поиск содержит параметр allow_partial_search_results
, этот параметр имеет приоритет над данной настройкой. По умолчанию true.
-
search.cancel_after_time_interval (Динамическое, единица времени): Настройка на уровне кластера, которая устанавливает значение по умолчанию для таймаута всех запросов на поиск на уровне координирующего узла. После достижения указанного времени запрос останавливается, и все связанные задачи отменяются. По умолчанию -1 (без таймаута).
-
search.default_search_timeout (Динамическое, единица времени): Настройка на уровне кластера, которая указывает максимальное время, в течение которого запрос на поиск может выполняться, прежде чем он будет отменен на уровне шарда. Если интервал таймаута указан в запросе на поиск, этот интервал имеет приоритет над настроенной настройкой. По умолчанию -1.
-
search.default_keep_alive (Динамическое, единица времени): Указывает значение по умолчанию для поддержания активности для запросов с прокруткой и точкой во времени (PIT). Поскольку запрос может попадать на шард несколько раз (например, во время фаз запроса и извлечения), OpenSearch открывает контекст запроса, который существует на протяжении всего времени запроса, чтобы обеспечить согласованность состояния шарда для каждого отдельного запроса к шард. В стандартном поиске, как только фаза извлечения завершается, контекст запроса закрывается. Для запроса с прокруткой или PIT OpenSearch сохраняет контекст запроса открытым до явного закрытия (или до достижения времени поддержания активности). Фоновый поток периодически проверяет все открытые контексты прокрутки и PIT и удаляет те, которые превысили свой таймаут поддержания активности. Настройка search.keep_alive_interval
указывает, как часто контексты проверяются на истечение срока. Настройка search.default_keep_alive
является значением по умолчанию для истечения срока. Запрос с прокруткой или PIT может явно указать время поддержания активности, которое имеет приоритет над этой настройкой. По умолчанию 5m.
-
search.keep_alive_interval (Статическое, единица времени): Определяет интервал, с которым OpenSearch проверяет контексты запросов, которые превысили свой лимит поддержания активности. По умолчанию 1m.
-
search.max_keep_alive (Динамическое, единица времени): Указывает максимальное значение поддержания активности. Настройка max_keep_alive
используется в качестве меры безопасности по отношению к другим настройкам поддержания активности (например, default_keep_alive
) и настройкам поддержания активности на уровне запроса (для контекстов прокрутки и PIT). Если запрос превышает значение max_keep_alive
в любом из случаев, операция завершится неудачей. По умолчанию 24h.
-
search.low_level_cancellation (Динамическое, логическое): Включает механизм низкоуровневой отмены запросов. Классический механизм таймаута Lucene проверяет время только во время сбора результатов поиска. Однако дорогостоящий запрос, такой как запрос с подстановочными знаками или префиксами, может занять много времени для расширения перед началом сбора результатов. В этом случае запрос может выполняться в течение времени, превышающего значение таймаута. Механизм низкоуровневой отмены решает эту проблему, устанавливая таймаут не только во время сбора результатов поиска, но и во время фазы расширения запроса или перед выполнением любой операции Lucene. По умолчанию true.
-
search.max_open_scroll_context (Динамическое, целое число): Настройка на уровне узла, которая указывает максимальное количество открытых контекстов прокрутки для узла. По умолчанию 500.
-
search.request_stats_enabled (Динамическое, логическое): Включает сбор статистики времени фаз на уровне узла с точки зрения координирующего узла. Статистика на уровне запроса отслеживает, сколько времени (всего) запросы на поиск проводят в каждой из различных фаз поиска. Вы можете получить эти счетчики, используя API статистики узлов. По умолчанию false.
-
search.highlight.term_vector_multi_value (Статическое, логическое): Указывает на необходимость выделять фрагменты по значениям многозначного поля. По умолчанию true.
-
search.max_aggregation_rewrite_filters (Динамическое, целое число): Определяет максимальное количество фильтров переписывания, разрешенных во время агрегации. Установите это значение в 0, чтобы отключить оптимизацию переписывания фильтров для агрегаций. Это экспериментальная функция и может измениться или быть удалена в будущих версиях.
-
search.dynamic_pruning.cardinality_aggregation.max_allowed_cardinality (Динамическое, целое число): Определяет порог для применения динамической обрезки в агрегации по кардинальности. Если кардинальность поля превышает этот порог, агрегация возвращается к методу по умолчанию. Это экспериментальная функция и может измениться или быть удалена в будущих версиях.
-
search.keyword_index_or_doc_values_enabled (Динамическое, логическое): Определяет, использовать ли индекс или значения документа при выполнении запросов multi_term
на полях ключевых слов. Значение по умолчанию - false.
Настройки точки во времени (PIT)
Для получения информации о настройках PIT см. Настройки PIT.
Чтобы узнать больше о статических и динамических настройках, см. Настройка OpenSearch.
10 - Настройки плагинов
Следующие настройки относятся к плагинам OpenSearch.
Настройки плагина оповещений
Для получения информации о настройках оповещений см. Настройки оповещений.
Настройки плагина обнаружения аномалий
Для получения информации о настройках обнаружения аномалий см. Настройки обнаружения аномалий.
Настройки плагина асинхронного поиска
Для получения информации о настройках асинхронного поиска см. Настройки асинхронного поиска.
Настройки плагина репликации между кластерами
Для получения информации о настройках репликации между кластерами см. Настройки репликации.
Настройки плагина Flow Framework
Для получения информации о настройках автоматического рабочего процесса см. Настройки рабочего процесса.
Настройки плагина геопространственных данных
Для получения информации о настройках процессора IP2Geo плагина геопространственных данных см. Настройки кластера.
Настройки плагина управления индексами
Для получения информации о настройках управления состоянием индекса (ISM) см. Настройки ISM.
Настройки сворачивания индексов
Для получения информации о настройках сворачивания индексов см. Настройки сворачивания индексов.
Настройки плагина планировщика задач
Для получения информации о настройках плагина планировщика задач см. Настройки кластера планировщика задач.
Настройки плагина k-NN
Для получения информации о настройках k-NN см. Настройки k-NN.
Настройки плагина ML Commons
Для получения информации о настройках машинного обучения см. Настройки кластера ML Commons.
Настройки плагина нейронного поиска
Плагин Security Analytics поддерживает следующие настройки:
- plugins.neural_search.hybrid_search_disabled (Динамическое, логическое): Отключает гибридный поиск. По умолчанию false.
Настройки плагина уведомлений
Плагин уведомлений поддерживает следующие настройки. Все настройки в этом списке являются динамическими:
-
opensearch.notifications.core.allowed_config_types (Список): Разрешенные типы конфигурации плагина уведомлений. Используйте API GET /_plugins/_notifications/features
, чтобы получить значение этой настройки. Типы конфигурации включают slack, chime, microsoft_teams, webhook, email, sns, ses_account, smtp_account и email_group.
-
opensearch.notifications.core.email.minimum_header_length (Целое число): Минимальная длина заголовка электронной почты. Используется для проверки общей длины сообщения электронной почты. По умолчанию 160.
-
opensearch.notifications.core.email.size_limit (Целое число): Лимит размера электронной почты. Используется для проверки общей длины сообщения электронной почты. По умолчанию 10000000.
-
opensearch.notifications.core.http.connection_timeout (Целое число): Таймаут подключения внутреннего HTTP-клиента. Клиент используется для каналов уведомлений на основе вебхуков. По умолчанию 5000.
-
opensearch.notifications.core.http.host_deny_list (Список): Список запрещенных хостов. HTTP-клиент не отправляет уведомления на URL вебхуков из этого списка.
-
opensearch.notifications.core.http.max_connection_per_route (Целое число): Максимальное количество HTTP-соединений на маршрут внутреннего HTTP-клиента. Клиент используется для каналов уведомлений на основе вебхуков. По умолчанию 20.
-
opensearch.notifications.core.http.max_connections (Целое число): Максимальное количество HTTP-соединений внутреннего HTTP-клиента. Клиент используется для каналов уведомлений на основе вебхуков. По умолчанию 60.
-
opensearch.notifications.core.http.socket_timeout (Целое число): Конфигурация таймаута сокета внутреннего HTTP-клиента. Клиент используется для каналов уведомлений на основе вебхуков. По умолчанию 50000.
-
opensearch.notifications.core.tooltip_support (Логическое): Включает поддержку подсказок для плагина уведомлений. Используйте API GET /_plugins/_notifications/features
, чтобы получить значение этой настройки. По умолчанию true.
-
opensearch.notifications.general.filter_by_backend_roles (Логическое): Включает фильтрацию по ролям бэкенда (контроль доступа на основе ролей для каналов уведомлений). По умолчанию false.
Настройки плагина Query Insights
Для получения информации о настройках плагина Query Insights см. Функции и настройки Query Insights.
Настройки плагина безопасности
Для получения информации о настройках плагина безопасности см. Настройки безопасности.
Настройки плагина Security Analytics
Для получения информации о настройках аналитики безопасности см. Настройки Security Analytics.
Настройки плагина SQL
Для получения информации о настройках, связанных с SQL и PPL, см. Настройки SQL.
11 - Экспериментальные флаги функций
Релизы OpenSearch могут содержать экспериментальные функции, которые вы можете включать или отключать по мере необходимости. Существует несколько способов включения флагов функций в зависимости от типа установки.
Включение в opensearch.yml
Если вы запускаете кластер OpenSearch и хотите включить флаги функций в конфигурационном файле, добавьте следующую строку в opensearch.yml
:
opensearch.experimental.feature.<feature_name>.enabled: true
Включение в контейнерах Docker
Если вы используете Docker, добавьте следующую строку в docker-compose.yml
в разделе opensearch-node > environment
:
OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.<feature_name>.enabled=true"
Включение в установке tarball
Чтобы включить флаги функций в установке tarball, укажите новый параметр JVM либо в config/jvm.options
, либо в OPENSEARCH_JAVA_OPTS
.
Вариант 1: Изменение jvm.options
Добавьте следующие строки в config/jvm.options
перед запуском процесса OpenSearch, чтобы включить функцию и ее зависимости:
-Dopensearch.experimental.feature.<feature_name>.enabled=true
Затем запустите OpenSearch:
Вариант 2: Включение с помощью переменной окружения
В качестве альтернативы прямому изменению config/jvm.options
, вы можете определить свойства, используя переменную окружения. Это можно сделать с помощью одной команды при запуске OpenSearch или определив переменную с помощью export
.
Чтобы добавить флаги функций в строке при запуске OpenSearch, выполните следующую команду:
OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.<feature_name>.enabled=true" ./opensearch-3.1.0/bin/opensearch
Если вы хотите определить переменную окружения отдельно перед запуском OpenSearch, выполните следующие команды:
export OPENSEARCH_JAVA_OPTS="-Dopensearch.experimental.feature.<feature_name>.enabled=true"
./bin/opensearch
Включение для разработки OpenSearch
Чтобы включить флаги функций для разработки, вы должны добавить правильные свойства в run.gradle
перед сборкой OpenSearch. См. Руководство для разработчиков для получения информации о том, как использовать Gradle для сборки OpenSearch.
Добавьте следующие свойства в run.gradle
, чтобы включить функцию:
testClusters {
runTask {
testDistribution = 'archive'
if (numZones > 1) numberOfZones = numZones
if (numNodes > 1) numberOfNodes = numNodes
systemProperty 'opensearch.experimental.feature.<feature_name>.enabled', 'true'
}
}
12 - Logs
Логи OpenSearch содержат ценную информацию для мониторинга операций кластера и устранения неполадок. Местоположение логов зависит от типа установки:
- В Docker OpenSearch записывает большинство логов в консоль и сохраняет оставшиеся в
opensearch/logs/
. Установка tarball также использует opensearch/logs/
.
- В большинстве установок на Linux OpenSearch записывает логи в
/var/log/opensearch/
.
Логи доступны в формате .log (обычный текст) и .json. Права доступа к логам OpenSearch по умолчанию составляют -rw-r--r--
, что означает, что любой пользователь на узле может их читать. Вы можете изменить это поведение для каждого типа логов в log4j2.properties
, используя опцию filePermissions
. Например, вы можете добавить appender.rolling.filePermissions = rw-r-----
, чтобы изменить права доступа для JSON-сервера логов. Для получения подробной информации см. документацию Log4j 2.
Логи приложений
Для своих логов приложений OpenSearch использует Apache Log4j 2 и его встроенные уровни логирования (от наименее до наиболее серьезных). В следующей таблице описаны настройки логирования.
Настройка |
Тип данных |
Описание |
logger.org.opensearch.discovery |
Строка |
Логгеры принимают встроенные уровни логирования Log4j2: OFF, FATAL, ERROR, WARN, INFO, DEBUG и TRACE. По умолчанию INFO. |
Вместо изменения уровня логирования по умолчанию (logger.level
), вы можете изменить уровень логирования для отдельных модулей OpenSearch:
PUT /_cluster/settings
{
"persistent" : {
"logger.org.opensearch.index.reindex" : "DEBUG"
}
}
Самый простой способ идентифицировать модули — не по логам, которые сокращают путь (например, o.o.i.r), а по исходному коду OpenSearch.
После этого изменения OpenSearch будет генерировать гораздо более подробные логи во время операций повторной индексации:
[2019-10-18T16:52:51,184][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: starting
[2019-10-18T16:52:51,186][DEBUG][o.o.i.r.TransportReindexAction] [node1] executing initial scroll against [some-index]
[2019-10-18T16:52:51,291][DEBUG][o.o.i.r.TransportReindexAction] [node1] scroll returned [3] documents with a scroll id of [DXF1Z==]
[2019-10-18T16:52:51,292][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [3] hits
[2019-10-18T16:52:51,294][DEBUG][o.o.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,297][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,299][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: sending [3] entry, [222b] bulk request
[2019-10-18T16:52:51,310][INFO ][o.e.c.m.MetaDataMappingService] [node1] [some-new-index/R-j3adc6QTmEAEb-eAie9g] create_mapping [_doc]
[2019-10-18T16:52:51,383][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: got scroll response with [0] hits
[2019-10-18T16:52:51,384][DEBUG][o.o.i.r.WorkerBulkByScrollTaskState] [node1] [1626]: preparing bulk request for [0s]
[2019-10-18T16:52:51,385][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: preparing bulk request
[2019-10-18T16:52:51,386][DEBUG][o.o.i.r.TransportReindexAction] [node1] [1626]: finishing without any catastrophic failures
[2019-10-18T16:52:51,395][DEBUG][o.o.i.r.TransportReindexAction] [node1] Freed [1] contexts
Уровни DEBUG и TRACE являются чрезвычайно подробными. Если вы включаете один из них для устранения проблемы, отключите его после завершения.
Существуют и другие способы изменения уровней логирования:
- Добавление строк в
opensearch.yml
logger.org.opensearch.index.reindex: debug
Изменение opensearch.yml
имеет смысл, если вы хотите повторно использовать свою конфигурацию логирования для нескольких кластеров или отлаживать проблемы запуска с одним узлом.
- Изменение
log4j2.properties
# Определите новый логгер с уникальным ID для повторной индексации
logger.reindex.name = org.opensearch.index.reindex
# Установите уровень логирования для этого ID
logger.reindex.level = debug
Этот подход является чрезвычайно гибким, но требует знакомства с синтаксисом файла свойств Log4j 2. В общем, другие варианты предлагают более простую конфигурацию.
Если вы изучите файл log4j2.properties
по умолчанию в каталоге конфигурации, вы увидите несколько специфичных для OpenSearch переменных:
appender.console.layout.pattern = [%d{ISO8601}][%-5p][%-25c{1.}] [%node_name]%marker %m%n
appender.rolling_old.fileName = ${sys:opensearch.logs.base_path}${sys:file.separator}${sys:opensearch.logs.cluster_name}.log
${sys:opensearch.logs.base_path}
— это каталог для логов (например, /var/log/opensearch/
).
${sys:opensearch.logs.cluster_name}
— это имя кластера.
${sys:opensearch.logs.node_name}
— это имя узла.
[%node_name]
— это имя узла.
Медленные логи запросов поиска
Новая функция в версии 2.12, OpenSearch предлагает медленные логи на уровне запросов для поиска. Эти логи основываются на пороговых значениях, чтобы определить, что квалифицируется как “медленно”. Все запросы, которые превышают порог, записываются в логи.
Медленные логи запросов поиска включаются динамически через API настроек кластера. В отличие от медленных логов шардов, пороги медленных логов запросов поиска настраиваются для общего времени выполнения запроса. По умолчанию логи отключены (все пороги установлены на -1).
PUT /_cluster/settings
{
"persistent" : {
"cluster.search.request.slowlog.level" : "TRACE",
"cluster.search.request.slowlog.threshold.warn": "10s",
"cluster.search.request.slowlog.threshold.info": "5s",
"cluster.search.request.slowlog.threshold.debug": "2s",
"cluster.search.request.slowlog.threshold.trace": "10ms"
}
}
Строка из opensearch_index_search_slowlog.log
может выглядеть следующим образом:
[2023-10-30T15:47:42,630][TRACE][c.s.r.slowlog] [runTask-0] took[80.8ms], took_millis[80], phase_took_millis[{expand=0, query=39, fetch=22}], total_hits[4 hits], search_type[QUERY_THEN_FETCH], shards[{total: 10, successful: 10, skipped: 0, failed: 0}], source[{"query":{"match_all":{"boost":1.0}}}], id[]
Медленные логи запросов поиска могут занимать значительное место на диске и влиять на производительность, если вы установите низкие пороговые значения. Рассмотрите возможность временного включения их для устранения неполадок или настройки производительности. Чтобы отключить медленные логи запросов поиска, верните все пороги к -1.
Медленные логи шардов
OpenSearch имеет два типа медленных логов шардов, которые помогают выявлять проблемы с производительностью: медленный лог поиска и медленный лог индексации.
Эти логи основываются на пороговых значениях, чтобы определить, что квалифицируется как “медленный” поиск или “медленная” операция индексации. Например, вы можете решить, что запрос считается медленным, если его выполнение занимает более 15 секунд. В отличие от логов приложений, которые настраиваются для модулей, медленные логи настраиваются для индексов. По умолчанию оба лога отключены (все пороги установлены на -1).
В отличие от медленных логов запросов поиска, пороги медленных логов шардов настраиваются для времени выполнения отдельных шардов.
GET <some-index>/_settings?include_defaults=true
{
"indexing": {
"slowlog": {
"reformat": "true",
"threshold": {
"index": {
"warn": "-1",
"trace": "-1",
"debug": "-1",
"info": "-1"
}
},
"source": "1000",
"level": "TRACE"
}
},
"search": {
"slowlog": {
"level": "TRACE",
"threshold": {
"fetch": {
"warn": "-1",
"trace": "-1",
"debug": "-1",
"info": "-1"
},
"query": {
"warn": "-1",
"trace": "-1",
"debug": "-1",
"info": "-1"
}
}
}
}
}
Чтобы включить эти логи, увеличьте один или несколько порогов:
PUT <some-index>/_settings
{
"indexing": {
"slowlog": {
"threshold": {
"index": {
"warn": "15s",
"trace": "750ms",
"debug": "3s",
"info": "10s"
}
},
"source": "500",
"level": "INFO"
}
}
}
Пример настройки медленных логов индексации
В этом примере OpenSearch записывает операции индексации, которые занимают 15 секунд или дольше, на уровне WARN, а операции, которые занимают от 10 до 14.x секунд, на уровне INFO. Если вы установите порог в 0 секунд, OpenSearch будет записывать все операции, что может быть полезно для проверки, действительно ли медленные логи включены.
- reformat указывает, следует ли записывать поле _source документа в одной строке (true) или позволить ему занимать несколько строк (false).
- source — это количество символов поля _source документа, которые нужно записать.
- level — это минимальный уровень логирования, который следует включить.
Строка из opensearch_index_indexing_slowlog.log
может выглядеть следующим образом:
node1 | [2019-10-24T19:48:51,012][WARN][i.i.s.index] [node1] [some-index/i86iF5kyTyy-PS8zrdDeAA] took[3.4ms], took_millis[3], type[_doc], id[1], routing[], source[{"title":"Your Name", "Director":"Makoto Shinkai"}]
Медленные логи шардов могут занимать значительное место на диске и влиять на производительность, если вы установите низкие пороговые значения. Рассмотрите возможность временного включения их для устранения неполадок или настройки производительности. Чтобы отключить медленные логи шардов, верните все пороги к -1.
Журналы задач
OpenSearch может записывать время ЦП и использование памяти для N самых затратных по памяти поисковых задач, когда включены потребители ресурсов задач. По умолчанию потребители ресурсов задач будут записывать 10 самых затратных поисковых задач с интервалом в 60 секунд. Эти значения можно настроить в файле opensearch.yml
.
Запись задач включается динамически через API настроек кластера:
PUT _cluster/settings
{
"persistent" : {
"task_resource_consumers.enabled" : "true"
}
}
Включение потребителей ресурсов задач может повлиять на задержку поиска.
После включения журналы будут записываться в файлы logs/opensearch_task_detailslog.json
и logs/opensearch_task_detailslog.log
.
Чтобы настроить интервал записи и количество записываемых поисковых задач, добавьте следующие строки в opensearch.yml
:
# Количество затратных поисковых задач для записи
cluster.task.consumers.top_n.size: 100
# Интервал записи
cluster.task.consumers.top_n.frequency: 30s
Журналы устаревания
Журналы устаревания фиксируют, когда клиенты делают устаревшие вызовы API к вашему кластеру. Эти журналы могут помочь вам выявить и исправить проблемы до обновления до новой основной версии. По умолчанию OpenSearch записывает устаревшие вызовы API на уровне WARN, что хорошо подходит для почти всех случаев использования. При необходимости настройте logger.deprecation.level
, используя _cluster/settings
, opensearch.yml
или log4j2.properties
.