Справочник по подключению Elastic Dropbox
Подключение Elastic Dropbox — это подключение для Dropbox. Это подключение написано на Python с использованием фреймворка подключений Elastic.
Просмотреть исходный код для этого подключения (ветка 8.17, совместимая с Elastic 8.17).
Справочник по управляемому подключению Elastic
Просмотреть справочник по управляемому подключению Elastic
Доступность и предварительные требования
Этот коннектор доступен как управляемый коннектор в версиях Elastic 8.10.0 и выше.
Чтобы использовать этот коннектор в Elastic Cloud, выполните все требования к управляемым коннекторам.
Создать коннектор Dropbox
Использование интерфейса
Чтобы создать новый коннектор Dropbox:
- В интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Коннекторы в главном меню или воспользуйтесь полем глобального поиска.
- Следуйте инструкциям для создания нового родного коннектора Dropbox.
Для дополнительных операций см. Интерфейс коннекторов в Kibana.
Использование API
Вы можете использовать Elasticsearch API для создания коннекторов для создания нового родного коннектора Dropbox.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
is_native=True,
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
is_native: true,
});
console.log(response); PUT _connector/my-dropbox-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Dropbox",
"service_type": "dropbox",
"is_native": true
} Вам также потребуется создать ключ API для использования коннектором.
Пользователю необходимы привилегии кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.
Чтобы создать ключ API для коннектора:
-
Выполните следующую команду, заменив указанные значения. Обратите внимание на значения
idиencodedиз ответа:resp = client.security.create_api_key( name="my-connector-api-key", role_descriptors={ "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "my-connector-api-key", role_descriptors: { "my-connector-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "my-connector-api-key", "role_descriptors": { "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } -
Используйте значение
encodedдля хранения секрета коннектора и обратите внимание на значениеidиз ответа:resp = client.perform_request( "POST", "/_connector/_secret", headers={"Content-Type": "application/json"}, body={ "value": "encoded_api_key" }, ) print(resp)const response = await client.transport.request({ method: "POST", path: "/_connector/_secret", body: { value: "encoded_api_key", }, }); console.log(response);POST _connector/_secret { "value": "encoded_api_key" } -
Используйте ключ API
idи секрет коннектораidдля обновления коннектора:resp = client.connector.update_api_key_id( connector_id="my_connector_id>", api_key_id="API key_id", api_key_secret_id="secret_id", ) print(resp)const response = await client.connector.updateApiKeyId({ connector_id: "my_connector_id>", api_key_id: "API key_id", api_key_secret_id: "secret_id", }); console.log(response);PUT /_connector/my_connector_id>/_api_key_id { "api_key_id": "API key_id", "api_key_secret_id": "secret_id" }
Для получения подробной информации обо всех доступных API коннекторов обратитесь к документации API Elasticsearch.
Использование
Чтобы использовать этот коннектор как управляемый коннектор, см. Управляемые коннекторы Elastic.
Для дополнительных операций см. Интерфейс коннекторов в Kibana.
Перед настройкой коннектора вам необходимо:
Авторизация Dropbox API
Создать приложение Dropbox OAuth
Вам необходимо создать приложение OAuth на платформе Dropbox, выполнив следующие шаги:
-
Зарегистрируйте новое приложение в консоли приложений Dropbox. Выберите приложение с полным доступом к API Dropbox и выберите следующие необходимые разрешения:
-
files.content.read -
sharing.readДля использования защиты на уровне документов вам также потребуются следующие разрешения:
-
team_info.read -
team_data.member -
team_data.content.read -
members.read
-
- После создания приложения обратите внимание на значения ключа приложения и секрета приложения, которые понадобятся для настройки коннектора Dropbox в вашем развертывании Elastic.
Сгенерировать токен обновления
Чтобы сгенерировать токен обновления, выполните следующие шаги:
-
Перейдите по следующей ссылке, заменив
<APP_KEY>на сохраненный ранее ключ приложения:https://www.dropbox.com/oauth2/authorize?client_id=<APP_KEY>&response_type=code&token_access_type=offlineОтвет HTTP должен содержать код авторизации, который вы будете использовать для генерации токена обновления. Код авторизации может быть использован только один раз для создания токена обновления.
-
В своей консоли выполните следующую команду
cURL, заменив<AUTHORIZATION_CODE>,<APP_KEY>:<APP_SECRET>на сохраненные значения:curl -X POST "https://api.dropboxapi.com/oauth2/token?code=<AUTHORIZATION_CODE>&grant_type=authorization_code" -u "<APP_KEY>:<APP_SECRET>"
Сохраните токен обновления из ответа для использования в настройках коннектора.
Убедитесь, что в ответе есть следующий перечень областей:
-
account_info.read -
files.content.read -
files.metadata.read -
sharing.read -
team_info.read(если используется защита на уровне документов) -
team_data.member(если используется защита на уровне документов) -
team_data.content.read(если используется защита на уровне документов) -
members.read(если используется защита на уровне документов)
-
Настройка
Для настройки коннектора необходимы следующие поля конфигурации:
- Путь для извлечения файлов/папок
-
Путь к папке для извлечения файлов/папок из Dropbox. Значение по умолчанию —
/.Это поле можно обойти с помощью расширенных правил синхронизации.
- Ключ приложения
- Ключ приложения для аутентификации вашего приложения Dropbox.
- Секрет приложения
- Секрет приложения для аутентификации вашего приложения Dropbox.
- Токен обновления
- Токен обновления для аутентификации вашего приложения Dropbox.
- Включить защиту на уровне документов
- Включить защиту на уровне документов (DLS). При включении полные синхронизации будут извлекать списки управления доступом для каждого документа и хранить их в поле
_allow_access_control. Синхронизации доступа будут извлекать списки управления доступом пользователей и хранить их в отдельном индексе. - Включать группы и унаследованных пользователей
- Появляется при включении защиты на уровне документов. Включать группы и унаследованных пользователей при индексировании разрешений.
Включение Include groups and inherited users приведет к значительному снижению производительности.
Документы и синхронизации
Коннектор синхронизирует следующие объекты и сущности:
-
Файлы
- Включает метаданные, такие как имя файла, путь, размер, содержимое и т. д.
- Папки
Из-за проблемы с Dropbox обновления метаданных для файлов Paper из Dropbox Paper не сразу отображаются в интерфейсе Dropbox. Это задерживает доступ к обновленным результатам для коннектора. После того, как изменения метаданных станут видны в интерфейсе Dropbox, обновления будут доступны.
- Содержимое файлов размером более 10 МБ не будет извлечено. (Управляемые коннекторы могут использовать локальный сервис извлечения для обработки больших файлов с бинарным содержимым.)
- В настоящее время коннектор не извлекает файлы из общих папок команд.
- Разрешения по умолчанию не синхронизируются. Если защита на уровне документов (DLS) не включена, все документы, проиндексированные в развертывании Elastic, будут доступны всем пользователям с доступом к этому развертыванию.
Типы синхронизации
Полные синхронизации поддерживаются по умолчанию для всех коннекторов.
Этот коннектор также поддерживает инкрементальные синхронизации.
Правила синхронизации
Основные правила синхронизации одинаковы для всех соединителей и доступны по умолчанию.
Расширенные правила синхронизации
Для применения расширенных правил синхронизации требуется полная синхронизация.
В следующем разделе описаны расширенные правила синхронизации для этого соединителя.
Расширенные правила синхронизации для Dropbox позволяют синхронизировать файлы Dropbox на основе запроса, который соответствует строкам в имени файла. Вы можете дополнительно отфильтровать результаты запроса по file_extensions или file_categories. Если оба фильтра указаны, приоритет отдается file_categories. Ниже приведены несколько примеров для иллюстрации.
Пример: Только запрос
[
{
"query": "confidential"
},
{
"query": "dropbox"
}
] Пример: Запрос с фильтром расширения файла
[
{
"query": "dropbox",
"options": {
"file_extensions": [
"txt",
"pdf"
]
}
}
] Пример: Запрос с фильтром категории файла
[
{
"query": "test",
"options": {
"file_categories": [
{
".tag": "paper"
},
{
".tag": "png"
}
]
}
}
] Ограничения
- Извлечение содержимого не поддерживается для файлов Dropbox Paper при включенных расширенных правилах синхронизации.
Известные проблемы
Список известных проблем для всех соединителей см. в Известные проблемы.
Поиск и устранение неисправностей
См. Поиск и устранение неисправностей для списка советов по устранению неполадок для всех соединителей.
Безопасность
См. Безопасность для списка рекомендаций по безопасности для всех соединителей.
Извлечение содержимого
Самостоятельно управляемый соединитель
Просмотр справки по самостоятельно управляемому соединителю
Доступность и предварительные требования
Этот соединитель доступен как самостоятельно управляемый самостоятельно управляемый соединитель.
Этот самостоятельно управляемый соединитель совместим с версиями Elastic 8.9.0+.
Чтобы использовать этот соединитель, выполните все требования к самостоятельно управляемому соединителю.
Создать соединитель Dropbox
Использование интерфейса пользователя
Чтобы создать новый соединитель Dropbox:
- В интерфейсе Kibana перейдите к странице Поиск → Содержимое → Соединители в главном меню или используйте поле глобального поиска.
- Следуйте инструкциям для создания нового Dropbox самостоятельно управляемого соединителя.
Использование API
Вы можете использовать Elasticsearch API для создания соединителей для создания нового самостоятельно управляемого соединителя Dropbox.
Например:
resp = client.connector.put(
connector_id="my-{service-name-stub}-connector",
index_name="my-elasticsearch-index",
name="Content synced from {service-name}",
service_type="{service-name-stub}",
)
print(resp) const response = await client.connector.put({
connector_id: "my-{service-name-stub}-connector",
index_name: "my-elasticsearch-index",
name: "Content synced from {service-name}",
service_type: "{service-name-stub}",
});
console.log(response); PUT _connector/my-dropbox-connector
{
"index_name": "my-elasticsearch-index",
"name": "Content synced from Dropbox",
"service_type": "dropbox"
} Вам также потребуется создать ключ API для использования соединителем.
Пользователю нужны права кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.
Чтобы создать ключ API для соединителя:
-
Выполните следующую команду, заменив указанные значения. Обратите внимание на
encodedвозвращаемые значения из ответа:resp = client.security.create_api_key( name="connector_name-connector-api-key", role_descriptors={ "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "connector_name-connector-api-key", role_descriptors: { "connector_name-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "connector_name-connector-api-key", "role_descriptors": { "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } - Обновите файл
config.ymlсо значением ключа APIencoded.
Для получения подробной информации обо всех доступных API для соединителей обратитесь к документации API Elasticsearch.
Использование
Прежде чем вы сможете настроить свой соединитель, вам потребуется:
Чтобы использовать этот соединитель как самостоятельно управляемый соединитель, см. Самостоятельно управляемые соединители После настройки для дополнительных операций см. Интерфейс пользователя соединителей в Kibana.
Авторизация Dropbox API
Создать приложение Dropbox OAuth
Вам нужно создать приложение OAuth на платформе Dropbox, выполнив следующие действия:
-
Зарегистрируйте новое приложение в консоли приложений Dropbox. Выберите приложение для полного доступа к API Dropbox и выберите следующие необходимые разрешения:
-
files.content.read -
sharing.readДля использования защиты на уровне документов вам также потребуются следующие разрешения:
-
team_info.read -
team_data.member -
team_data.content.read -
members.read
-
- После создания приложения обратите внимание на значения ключ приложения и секрет приложения, которые вам понадобятся для настройки соединителя Dropbox в вашей развертке Elastic.
Сгенерировать токен обновления
Чтобы сгенерировать токен обновления, выполните следующие действия:
-
Перейдите по следующей ссылке, заменив
<APP_KEY>значением ключа приложения, сохраненным ранее:https://www.dropbox.com/oauth2/authorize?client_id=<APP_KEY>&response_type=code&token_access_type=offlineОтвет HTTP должен содержать код авторизации, который вы будете использовать для генерации токена обновления. Код авторизации можно использовать только один раз для создания токена обновления.
-
В терминале выполните следующую
cURLкоманду, заменив<AUTHORIZATION_CODE>,<APP_KEY>:<APP_SECRET>сохраненными ранее значениями:curl -X POST "https://api.dropboxapi.com/oauth2/token?code=<AUTHORIZATION_CODE>&grant_type=authorization_code" -u "<APP_KEY>:<APP_SECRET>"
Сохраните токен обновления из ответа для использования в настройке соединителя.
Убедитесь, что ответ содержит список следующих областей действия:
-
account_info.read -
files.content.read -
files.metadata.read -
sharing.read -
team_info.read(если используется защита на уровне документов) -
team_data.member(если используется защита на уровне документов) -
team_data.content.read(если используется защита на уровне документов) -
members.read(если используется защита на уровне документов)
-
Настройка
При использовании рабочего процесса самостоятельно управляемого соединителя по умолчанию эти поля будут использовать значения по умолчанию, установленные в коде источника соединителя. Эти значения установлены в определении функции get_default_configuration.
Эти настраиваемые поля будут отображаться соответствующими метками в интерфейсе пользователя Kibana. После подключения вы сможете обновить эти значения в Kibana.
Для настройки соединителя требуются следующие поля конфигурации:
-
path - Путь к папке для извлечения файлов/папок из Dropbox. Значение по умолчанию -
/. -
app_key(обязательно) - Ключ приложения для аутентификации вашего приложения Dropbox.
-
app_secret(обязательно) - Секрет приложения для аутентификации вашего приложения Dropbox.
-
refresh_token(обязательно) - Токен обновления для аутентификации вашего приложения Dropbox.
- use_document_level_security
- Включить защиту на уровне документов (DLS). При включении полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
_allow_access_control. Синхронизации управления доступом будут извлекать списки управления доступом пользователей и сохранять их в отдельном индексе. -
retry_count - Количество попыток повторной обработки после неудачного запроса к Dropbox. Значение по умолчанию -
3. -
concurrent_downloads - Количество одновременных загрузок для извлечения содержимого вложений. Это может помочь ускорить извлечение содержимого вложений. По умолчанию -
100. -
use_text_extraction_service - Требует отдельного развертывания службы извлечения текста Elastic. Требует, чтобы параметры конвейера отключали извлечение текста. Значение по умолчанию -
False. -
use_document_level_security - Включить защиту на уровне документов (DLS). При включении полные синхронизации будут извлекать списки управления доступом для каждого документа и сохранять их в поле
_allow_access_control. Синхронизации управления доступом будут извлекать списки управления доступом пользователей и сохранять их в отдельном индексе. -
include_inherited_users_and_groups - Зависит от включенной защиты на уровне документов. Включать группы и унаследованных пользователей при индексировании разрешений.
Включение Include groups and inherited users приведет к значительному снижению производительности.
Развертывание с помощью Docker
Вы можете развернуть соединитель Dropbox как самостоятельно управляемый соединитель с помощью Docker. Следуйте этим инструкциям.
Шаг 1: Загрузка образца файла конфигурации
Загрузите образец файла конфигурации. Вы можете загрузить его вручную или выполнить следующую команду:
curl https://raw.githubusercontent.com/elastic/connectors/main/config.yml.example --output ~/connectors-config/config.yml
Не забудьте обновить значение аргумента --output, если имя вашей директории отличается или вы хотите использовать другое имя файла конфигурации.
Шаг 2: Обновление конфигурационного файла для вашего автономного коннектора
Обновите конфигурационный файл с настройками, соответствующими вашей среде:
-
elasticsearch.host -
elasticsearch.api_key -
connectors
Если вы используете службу коннектора с Docker-образом Elasticsearch и Kibana, ваш конфигурационный файл будет выглядеть так:
# When connecting to your cloud deployment you should edit the host value
elasticsearch.host: http://host.docker.internal:9200
elasticsearch.api_key: <ELASTICSEARCH_API_KEY>
connectors:
-
connector_id: <CONNECTOR_ID_FROM_KIBANA>
service_type: dropbox
api_key: <CONNECTOR_API_KEY_FROM_KIBANA> # Optional. If not provided, the connector will use the elasticsearch.api_key instead Использование elasticsearch.api_key является рекомендуемым методом аутентификации. Однако вы также можете использовать elasticsearch.username и elasticsearch.password для аутентификации с вашим экземпляром Elasticsearch.
Примечание: Вы можете изменить другие значения по умолчанию, просто раскомментировав соответствующие настройки в конфигурационном файле и изменив их значения.
Шаг 3: Запуск Docker-изображения
Запустите Docker-образ со службой коннектора с помощью следующей команды:
docker run \ -v ~/connectors-config:/config \ --network "elastic" \ --tty \ --rm \ docker.elastic.co/enterprise-search/elastic-connectors:8.17.3 \ /app/bin/elastic-ingest \ -c /config/config.yml
Дополнительную информацию см. в DOCKER.md в репозитории elastic/connectors.
Найдите все доступные Docker-образы в официальном репозитории.
У нас также есть быстрый вариант автономного развертывания с использованием Docker Compose, который позволяет сразу запустить все необходимые службы: Elasticsearch, Kibana и службу коннекторов. Дополнительную информацию см. в файле README в репозитории elastic/connectors.
Документы и синхронизация
Коннектор синхронизирует следующие объекты и сущности:
-
Файлы
- Включает метаданные, такие как имя файла, путь, размер, содержимое и т. д.
- Папки
Из-за проблемы с Dropbox, обновления метаданных документов Paper из Dropbox Paper не сразу отображаются в пользовательском интерфейсе Dropbox. Это задерживает доступ к обновленным результатам для коннектора. После того, как изменения метаданных станут видны в пользовательском интерфейсе Dropbox, обновления будут доступны.
- Содержимое файлов размером более 10 МБ по умолчанию не будет извлечено. Для обработки больших бинарных файлов можно использовать локальную службу извлечения контента.
- В настоящее время коннектор не извлекает файлы из общих папок команд.
- Разрешения по умолчанию не синхронизируются. Если безопасность на уровне документов (DLS) не включена, все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию.
Типы синхронизации
По умолчанию для всех коннекторов поддерживаются полные синхронизации.
Этот коннектор также поддерживает инкрементные синхронизации.
Правила синхронизации
Базовые правила синхронизации одинаковы для всех коннекторов и доступны по умолчанию.
Расширенные правила синхронизации
Полная синхронизация необходима для применения расширенных правил синхронизации.
В этом разделе описаны расширенные правила синхронизации для этого коннектора.
Расширенные правила синхронизации для Dropbox позволяют синхронизировать файлы Dropbox на основе запроса, соответствующего строкам в имени файла. Вы можете дополнительно фильтровать результаты запроса по file_extensions или file_categories. При указании обоих параметров приоритет отдается file_categories. Ниже приведены несколько иллюстративных примеров.
Пример: Только запрос
[
{
"query": "confidential"
},
{
"query": "dropbox"
}
] Пример: Запрос с фильтром расширения файла
[
{
"query": "dropbox",
"options": {
"file_extensions": [
"txt",
"pdf"
]
}
}
] Пример: Запрос с фильтром категории файла
[
{
"query": "test",
"options": {
"file_categories": [
{
".tag": "paper"
},
{
".tag": "png"
}
]
}
}
] Ограничения
- Извлечение содержимого не поддерживается для файлов Dropbox Paper при включенных расширенных правилах синхронизации.
Конечное тестирование
Фреймворк коннектора позволяет операторам выполнять функциональные тесты с реальным источником данных. Дополнительную информацию см. в разделе тестирования коннекторов.
Для выполнения конечного тестирования коннектора Dropbox выполните следующую команду:
$ make ftest NAME=dropbox
Для более быстрого тестирования добавьте флаг DATA_SIZE=small:
make ftest NAME=dropbox DATA_SIZE=small
Известные проблемы
Список известных проблем для всех коннекторов см. в Известные проблемы.
Устранение неполадок
См. Устранение неполадок для получения советов по устранению неполадок для всех коннекторов.
Безопасность
См. Безопасность для получения советов по безопасности для всех коннекторов.
Извлечение содержимого
© 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-dropbox.html