Известные проблемы коннекторов
Управляемые пользователем коннекторы сервиса Enterprise Search
Начиная с 8.10.0, управляемые пользователем коннекторы больше не требуют, чтобы сервис Enterprise Search работал в вашей развертывании Elastic. Однако, если вы обновляете коннекторы с версий раньше 8.9, вам потребуется запустить Enterprise Search один раз, чтобы мигрировать ваши коннекторы в новый формат.
Некоторые моменты, которые следует учитывать при этой миграции:
- Это включает обновление системных индексов, которые хранят конфигурацию и историю синхронизации ваших коннекторов.
- Это операция на месте, то есть временные или резервные индексы не будут созданы.
- Поэтому важно сделать снимок кластера Elasticsearch перед обновлением — на случай, если произойдёт неудача при миграции индекса.
Если у вас возникнут проблемы с этой миграцией, обратитесь в службу поддержки.
Для работы управляемых пользователем коннекторов версия вашего саморазвёрнутого сервиса коннекторов должна соответствовать версии Elasticsearch. Например, если вы используете Elasticsearch 8.10.1, ваш сервис коннекторов должен быть версии 8.10.1.x. Elastic не поддерживает развертывания с несовместимыми версиями (за исключением случаев обновления).
Сервис коннекторов
У сервиса коннекторов есть следующие известные проблемы:
-
Ошибки OOM при синхронизации больших таблиц базы данных
Синхронизации после начальной синхронизации могут вызвать ошибки исчерпания памяти (OOM) при синхронизации больших таблиц базы данных. Это происходит потому, что соединители базы данных загружают и хранят идентификаторы в памяти. Для таблиц с миллионами записей это может привести к исчерпанию памяти, если у службы соединителя недостаточно оперативной памяти.
Чтобы решить эту проблему, вы можете:
-
Увеличение выделения оперативной памяти:
- Elastic Cloud: Обновите экземпляр Enterprise Search до большего размера. Обратите внимание, что для управляемых соединителей Elastic, работающих в Elastic Cloud, служба соединителя работает на узле Enterprise Search. Она имеет доступ только до 40% выделенной оперативной памяти узла.
-
Самостоятельное управление: Увеличьте выделение оперативной памяти для машины/контейнера, на котором работает служба соединителя.
Оперативная память рекомендации по размеру
В следующей таблице показано примерное использование оперативной памяти для загрузки идентификаторов в память.
Количество идентификаторов
Использование памяти в МБ (2-кратный буфер)
1 000 000
≈ 45,78 МБ
10 000 000
≈ 457,76 МБ
50 000 000
≈ 2288,82 МБ (≈ 2,29 ГБ)
100 000 000
≈ 4577,64 МБ (≈ 4,58 ГБ)
-
Оптимизировать правила синхронизации:
- Просмотрите и оптимизируйте правила синхронизации, чтобы отфильтровать и уменьшить данные, извлекаемые из источника перед синхронизацией.
-
Используйте самостоятельный соединитель вместо управляемого:
- Поскольку самостоятельные соединители работают на вашей инфраструктуре, они не подвержены тем же ограничениям оперативной памяти, что и узел Enterprise Search.
-
-
Обновления с развертываний, работающих на версиях, более ранних, чем 8.9.0, могут привести к сбою задач синхронизации
Из-за ошибки отображение поля
job_typeбудет отсутствовать после обновления с развертываний, работающих на версиях, более ранних, чем 8.9.0. Задачи синхронизации не будут отображаться в пользовательском интерфейсе Kibana (история задач), и служба соединителей не сможет запускать новые задачи синхронизации. Это произойдет только в том случае, если у вас есть предварительно запланированные задачи синхронизации.Чтобы решить эту проблему, вы можете вручную добавить отсутствующее поле с помощью следующей команды и запустить задачу синхронизации:
resp = client.indices.put_mapping( index=".elastic-connectors-sync-jobs-v1", properties={ "job_type": { "type": "keyword" } }, ) print(resp)const response = await client.indices.putMapping({ index: ".elastic-connectors-sync-jobs-v1", properties: { job_type: { type: "keyword", }, }, }); console.log(response);PUT .elastic-connectors-sync-jobs-v1/_mapping { "properties": { "job_type": { "type": "keyword" } } } -
Служба соединителей не сможет выполнить синхронизацию, если соединитель пытается извлечь более 2 147 483 647 (231-1) документов из источника данных
Решение — вручную разделить данные, подлежащие синхронизации, с помощью нескольких индексов поиска.
-
Настройка расписания может нарушиться при обновлении с версии 8.6 или более ранней.
Если вы столкнетесь с ошибкой
'custom_schedule_triggered': undefined method 'each' for nil:NilClass (NoMethodError), это означает, что миграция функции настройки расписания не удалась. Вы можете использовать следующее временное решение:resp = client.update( index=".elastic-connectors", id="connector-id", doc={ "custom_scheduling": {} }, ) print(resp)const response = await client.update({ index: ".elastic-connectors", id: "connector-id", doc: { custom_scheduling: {}, }, }); console.log(response);POST /.elastic-connectors/_update/connector-id { "doc": { "custom_scheduling": {} } }Эта ошибка может появиться у соединителей или ползунков, которые не являются причиной проблемы. Если ошибка сохраняется, попробуйте выполнить приведенную выше команду для каждого документа в индексе
.elastic-connectors.
-
Подключение, обновленные с версии 8.7 или более ранних, могут иметь отсутствующие поля конфигурации
Подключение, созданное до версии 8.8, иногда может отсутствовать поля конфигурации. Это известная проблема для подключения MySQL, но также может затрагивать и другие подключения.
Если самодостаточное подключение выдает ошибку
Connector for <connector_id> has missing configuration fields: <field_a>, <field_b>..., вы можете исправить ошибку, вручную добавив недостающие поля конфигурации через Dev Tools. Требуются только два следующих свойства поля, остальные будут автоматически заполнены самодостаточным подключением:-
type: одно изstr,int,boolилиlist -
value: любое значение, если только оно имеет правильный типtype(значения типаlistследует сохранять как строки, разделённые запятыми)resp = client.update( index=".elastic-connectors", id="connector_id", doc={ "configuration": { "field_a": { "type": "str", "value": "" }, "field_b": { "type": "bool", "value": False }, "field_c": { "type": "int", "value": 1 }, "field_d": { "type": "list", "value": "a,b" } } }, ) print(resp)const response = await client.update({ index: ".elastic-connectors", id: "connector_id", doc: { configuration: { field_a: { type: "str", value: "", }, field_b: { type: "bool", value: false, }, field_c: { type: "int", value: 1, }, field_d: { type: "list", value: "a,b", }, }, }, }); console.log(response);POST /.elastic-connectors/_update/connector_id { "doc" : { "configuration": { "field_a": { "type": "str", "value": "" }, "field_b": { "type": "bool", "value": false }, "field_c": { "type": "int", "value": 1 }, "field_d": { "type": "list", "value": "a,b" } } } }
-
-
Подключения Python, обновленные с 8.7.1, будут сообщать объемы документов в гигабайтах (ГБ) вместо мегабайтов (МБ)
В результате фактический объем документов будет занижен в 1024 раза.
-
Следующие управляемые подключения Elastic не будут корректно работать в Elastic Cloud в версии 8.9.0. Они по-прежнему доступны как самодостаточные подключения.
- Azure Blob Storage
- Confluence Cloud & Server
- Jira Cloud & Server
- Сетевые накопители
Индивидуальные известные проблемы подключения
У отдельных подключений могут быть дополнительные известные проблемы. Обратитесь к документации по каждому подключению для получения информации о проблемах, специфичных для конкретного подключения.
© 2023-2025 Elasticsearch
As of September 2024, Elasticsearch is available under a choice of three licenses: the Server Side Public License (SSPL), the Elastic License, or the AGPLv3 (OSI approved).
Elasticsearch and the Elasticsearch logo are trademarks of Elasticsearch B.V., registered in the U.S. and in other countries.
https://www.elastic.co/guide/en/elasticsearch/reference/8.17/es-connectors-known-issues.html