Spec-Zone.ru › Elasticsearch 8
›Руководство по Elasticsearch [8.17] ›Ввод контента с помощью подключений Elastic ›Справочные материалы по подключениям

Справочник по подключению Elastic Azure Blob Storage

Подключение Elastic Azure Blob Storage — это подключение к хранилищу Azure Blob Storage.

Это подключение написано на Python с использованием фреймворка подключений Elastic.

Просмотрите исходный код этого подключения (ветка 8.17, совместима с Elastic 8.17).

Выберите справочник по подключению

Вы используете управляемое подключение в Elastic Cloud или самостоятельное подключение? Разверните документацию в соответствии с выбранным методом развертывания.

Справочник по управляемому подключению Elastic

Просмотр справочника по управляемому подключению Elastic
Доступность и предварительные требования

Это подключение доступно в качестве управляемого подключения в Elastic Cloud, начиная с версии 8.9.1.

Чтобы использовать это подключение напрямую в Elastic Cloud, выполните все требования к управляемым подключениям.

Совместимость

Это подключение не тестировалось с Azure Government. Поэтому мы не можем гарантировать его работу с конечными точками Azure Government. Для получения дополнительной информации о Azure Government по сравнению с глобальной Azure обратитесь к официальной документации Microsoft.

Создание подключения Azure Blob Storage

Использование пользовательского интерфейса

Чтобы создать новое подключение Azure Blob Storage:

  1. В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Контент → Подключения из главного меню или используйте поле глобального поиска.
  2. Следуйте инструкциям, чтобы создать новое родное подключение Azure Blob Storage.

Для дополнительных операций см. Пользовательский интерфейс подключений в Kibana.

Использование API

Вы можете использовать Elasticsearch API создания подключения, чтобы создать новое родное подключение Azure Blob Storage.

Например:

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-azure_blob_storage-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Azure Blob Storage",
  "service_type": "azure_blob_storage",
  "is_native": true
}
Вам также потребуется создать ключ API для использования подключением.

Пользователю необходимы права кластера manage_api_key, manage_connector и write_connector_secrets для программированного создания ключей API.

Чтобы создать ключ API для подключения:

  1. Выполните следующую команду, заменив значения, где это необходимо. Обратите внимание на значения 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
            }
          ]
        }
      }
    }
  2. Используйте значение encoded для хранения секрета подключения и обратите внимание на значение id, возвращаемое ответом:
  3. 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"
    }
  4. Используйте ключ API id и секрет подключения id для обновления подключения:
  5. 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.

Настройка

Для настройки подключения необходимы следующие поля конфигурации:

Имя учетной записи
Имя учетной записи Azure Blob Storage.
Ключ учетной записи
Ключ учетной записи для учетной записи Azure Blob Storage.
Конечная точка BLOB
Конечная точка службы BLOB.
Контейнеры
Список контейнеров для индексирования. * будет индексировать все контейнеры.
Документы и синхронизации

Подключение извлечет все доступные данные в контейнере.

  • Контент файлов размером более 10 МБ не будет извлечен. (Самостоятельные подключения могут использовать локальную службу извлечения для обработки больших двоичных файлов.)
  • Разрешения не синхронизируются. Все документы, индексируемые в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Типы синхронизации

Полные синхронизации поддерживаются по умолчанию для всех подключений.

Это подключение также поддерживает инкрементные синхронизации.

Правила синхронизации

Базовые правила синхронизации идентичны для всех подключений и доступны по умолчанию.

Расширенные правила синхронизации недоступны для этого подключения в данной версии. В настоящее время фильтрация выполняется с помощью конвейеров извлечения.

Извлечение контента

См. Извлечение контента.

Известные проблемы

У данного подключения есть следующие известные проблемы:

  • lease data и tier поля не обновляются в индексах Elasticsearch

    Это связано с тем, что метка времени BLOB не обновляется. См. вопрос на Github.

Устранение неполадок

См. Устранение неполадок.

Безопасность

См. Безопасность.

Просмотрите исходный код подключения (ветка 8.17, совместима с Elastic 8.17)

Самостоятельное подключение

Просмотр справки по самоуправляемому соединителю
Доступность и предварительные требования

Этот соединитель доступен как самоуправляемый самоуправляемый соединитель. Этот самоуправляемый соединитель совместим с версиями Elastic 8.6.0+. Для использования этого соединителя, выполните все требования к самоуправляемым соединителям.

Совместимость

Этот соединитель не тестировался с Azure Government. Поэтому мы не можем гарантировать, что он будет работать с конечными точками Azure Government. Для получения дополнительной информации об Azure Government по сравнению с глобальной Azure, обратитесь к официальной документации Microsoft.

Создание соединителя Azure Blob Storage

Использование интерфейса пользователя

Для создания нового соединителя Azure Blob Storage:

  1. В интерфейсе Kibana перейдите на страницу Поиск → Содержание → Соединители из главного меню или используйте поле глобального поиска.
  2. Следуйте инструкциям для создания нового самоуправляемого соединителя Azure Blob Storage.

Использование API

Вы можете использовать Elasticsearch API для создания соединителя для создания нового самоуправляемого соединителя Azure Blob Storage.

Например:

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-azure_blob_storage-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Azure Blob Storage",
  "service_type": "azure_blob_storage"
}
Вам также потребуется создать ключ API для использования соединителем.

Пользователю требуются привилегии кластера manage_api_key, manage_connector и write_connector_secrets для программно генерирования ключей API.

Для создания ключа API для соединителя:

  1. Выполните следующую команду, заменив значения там, где указано. Обратите внимание на значения 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
            }
          ]
        }
      }
    }
  2. Обновите свой файл config.yml с значением ключа API encoded.

Подробные сведения обо всех доступных API соединителей см. в документации API Elasticsearch.

Использование

Для использования этого соединителя в качестве самоуправляемого соединителя, см. Самоуправляемые соединители. Для дополнительных операций с использованием см. Интерфейс пользователя соединителей в Kibana.

Настройка

При использовании рабочего процесса самоуправляемого соединителя, изначально эти поля будут использовать значения по умолчанию, заданные в исходном коде соединителя. Эти значения заданы в определении функции get_default_configuration.

Эти настраиваемые поля будут отображаться с соответствующими метками в интерфейсе Kibana. После подключения вы сможете обновить эти значения в Kibana.

Для настройки соединителя требуются следующие поля конфигурации:

account_name
Имя учетной записи Azure Blob Storage.
account_key
Ключ учетной записи для учетной записи Azure Blob Storage.
blob_endpoint
Конечная точка службы Blob.
containers
Список контейнеров для индексации. * будет индексировать все контейнеры.
retry_count
Количество попыток повторной обработки после неудачного вызова. Значение по умолчанию — 3.
concurrent_downloads
Количество одновременных загрузок для получения содержимого. Значение по умолчанию — 100.
use_text_extraction_service
Требует отдельного развертывания службы извлечения текста Elastic. Требует, чтобы настройки конвейера индексации отключали извлечение текста. Значение по умолчанию — False.
Развертывание с помощью Docker

Вы можете развернуть соединитель Azure Blob Storage как самоуправляемый соединитель с помощью 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: azure_blob_storage
    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.

Документы и синхронизации

Соединитель получит все доступные данные в контейнере.

  • Содержимое файлов размером более 10 МБ по умолчанию не будет извлекаться. Вы можете использовать самоуправляемую локальную службу извлечения текста для обработки больших бинарных файлов.
  • Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Типы синхронизации

Полные синхронизации поддерживаются по умолчанию для всех соединителей.

Этот соединитель также поддерживает инкрементные синхронизации.

Правила синхронизации

Основные правила синхронизации одинаковы для всех соединителей и доступны по умолчанию.

Расширенные правила синхронизации недоступны для этого соединителя в текущей версии. В настоящее время фильтрация контролируется через конвейеры индексации.

Извлечение содержимого

См. Извлечение содержимого.

Тестирование «от начала до конца»

Фреймворк соединителя позволяет операторам выполнять функциональные тесты с использованием реального источника данных. Дополнительные сведения см. в тестировании соединителя.

Для выполнения тестирования «от начала до конца» для соединителя Azure Blob Storage выполните следующую команду:

$ make ftest NAME=azure_blob_storage

Для более быстрых тестов добавьте флаг DATA_SIZE=small:

make ftest NAME=azure_blob_storage DATA_SIZE=small
Известные проблемы

У этого соединителя есть следующие известные проблемы:

  • lease data и tier поля не обновляются в индексах Elasticsearch

    Это связано с тем, что метка времени blob не обновляется. Обратитесь к проблеме на Github.

Поиск и устранение неполадок

См. Поиск и устранение неполадок.

Безопасность

См. Безопасность.

© 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-azure-blob.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API