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

Справочник по подключению Elastic к Microsoft SQL

Подключение Elastic к Microsoft SQL — это подключение для баз данных Microsoft SQL. Это подключение написано на языке Python с использованием фреймворка подключений Elastic.

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

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

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

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

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

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

Создать коннектор Microsoft SQL

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

Чтобы создать новый коннектор Microsoft SQL:

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

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

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

Вы можете использовать Elasticsearch API создания коннектора, чтобы создать новый родной коннектор Microsoft SQL.

Например:

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-mssql-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Microsoft SQL",
  "service_type": "mssql",
  "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 из этого ответа:

    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"
    }
  3. Используйте ключ 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 Elasticsearch для получения подробной информации обо всех доступных API коннекторов.

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

Для использования этого коннектора как управляемого коннектора используйте рабочие процессы Коннектора. См. Управляемые коннекторы Elastic.

Пользователям требуется роль sysadmin SQL Server. Обратите внимание, что требуется аутентификация SQL Server. Аутентификация Windows не поддерживается.

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

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

Следующие совместимы с фреймворками коннекторов Elastic:

  • Microsoft SQL Server версии 2017, 2019
  • Azure SQL
  • Amazon RDS для SQL Server
Настройка

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

Хост

Адрес хоста сервера, где размещен Microsoft SQL Server. Значение по умолчанию — 127.0.0.1. Примеры:

  • 192.158.1.38
  • demo.instance.demo-region.demo.service.com
Порт
Порт, на котором размещен Microsoft SQL Server. Значение по умолчанию — 1433.
Имя пользователя
Имя пользователя учетной записи для Microsoft SQL Server (только аутентификация SQL Server).
Пароль
Пароль учетной записи, используемой для Microsoft SQL Server (только аутентификация SQL Server).
База данных

Название базы данных Microsoft SQL Server. Примеры:

  • employee_database
  • customer_database
Список таблиц, разделенных запятыми

Список таблиц, разделенных запятыми. Коннектор Microsoft SQL извлечет данные из всех таблиц, присутствующих в настроенной базе данных, если значение равно * . Значение по умолчанию — *. Примеры:

  • table_1, table_2
  • *

    Это поле можно обойти с помощью расширенных правил синхронизации.

Схема

Название схемы Microsoft SQL Server. Значение по умолчанию — dbo.

Примеры:

  • dbo
  • custom_schema
Включить SSL
Переключатель для включения проверки SSL. Значение по умолчанию — False.
Сертификат SSL

Содержимое сертификата SSL. Если SSL отключен, значение ssl_ca будет проигнорировано.

Развернуть для просмотра примера сертификата
-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
Проверить хост
Переключатель для включения проверки хоста. Значение по умолчанию — False.
Документы и синхронизации
  • Таблицы без определенного первичного ключа пропускаются.
  • Если last_user_update таблицы sys.dm_db_index_usage_stats недоступна для определенной таблицы и базы данных, все данные в этой таблице будут синхронизированы.
  • Файлы размером более 10 МБ не будут извлечены.
  • Разрешения не синхронизируются. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Правила синхронизации

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

Расширенные правила синхронизации

Этот коннектор поддерживает расширенные правила синхронизации для удаленной фильтрации. Эти правила охватывают сложные сценарии запросов и фильтрации, которые не могут быть выражены с помощью основных правил синхронизации. Расширенные правила синхронизации определяются с помощью JSON-фрагмента DSL, специфичного для источника.

Для того, чтобы расширенные правила синхронизации вступили в силу, требуется полная синхронизация.

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

Развернуть для просмотра примера данных

Таблица employee

emp_id name age

3

John

28

10

Jane

35

14

Alex

22

* Таблица customer

c_id name age

2

Elm

24

6

Pine

30

9

Oak

34

Пример: Два запроса

Эти правила извлекают все записи из таблиц employee и customer. Данные из этих таблиц будут синхронизированы с Elasticsearch отдельно.

[
  {
    "tables": [
      "employee"
    ],
    "query": "SELECT * FROM employee"
  },
  {
    "tables": [
      "customer"
    ],
    "query": "SELECT * FROM customer"
  }
]

Пример: Один запрос WHERE

Это правило извлекает только записи из таблицы employee, где значение emp_id больше 5. Только эти отфильтрованные записи будут синхронизированы с Elasticsearch.

[
  {
    "tables": ["employee"],
    "query": "SELECT * FROM employee WHERE emp_id > 5"
  }
]

Пример: Один запрос JOIN

Это правило извлекает записи, выполняя INNER JOIN между таблицами employee и customer по условию, что значение emp_id в таблице employee соответствует значению c_id в таблице customer. Результат этого объединённых данных будет синхронизирован с Elasticsearch.

[
  {
    "tables": ["employee", "customer"],
    "query": "SELECT * FROM employee INNER JOIN customer ON employee.emp_id = customer.c_id"
  }
]

При использовании расширенных правил, запрос может обойти поле конфигурации tables. Это произойдёт, если запрос указывает таблицу, которая не отображается в конфигурации. Это также может произойти, если конфигурация определяет * для извлечения всех таблиц, а расширенное правило синхронизации запрашивает только подмножество таблиц.

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

Для этого коннектора известных проблем нет. См. Известные проблемы для проблем, влияющих на все коннекторы.

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

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

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

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

Этот коннектор использует исходный код коннектора баз данных общего назначения (ветка 8.17, совместимая с Elastic 8.17).

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

Коннектор с самостоятельным управлением

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

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

Создайте подключение к Microsoft SQL

Используйте интерфейс

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

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

Используйте API

Вы можете использовать Elasticsearch API создания подключений для создания нового самостоятельно управляемого подключения к Microsoft SQL.

Например:

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-mssql-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from Microsoft SQL",
  "service_type": "mssql"
}
Вам также потребуется создать ключ 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 Elasticsearch для получения подробной информации обо всех доступных API подключений.

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

Пользователи требуют роль сервера sysadmin. Обратите внимание, что требуется аутентификация SQL Server. Аутентификация Windows не поддерживается.

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

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

Следующие совместимы с рамками подключения Elastic:

  • Microsoft SQL Server версии 2017, 2019
  • Azure SQL
  • Amazon RDS для SQL Server
Настройка

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

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

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

host
Адрес хоста сервера, на котором размещен Microsoft SQL Server. Значение по умолчанию — 127.0.0.1. Примеры:
  • 192.158.1.38
  • demo.instance.demo-region.demo.service.com
port
Порт, на котором размещен Microsoft SQL Server. Значение по умолчанию — 9090.
username
Имя пользователя учетной записи для Microsoft SQL Server. (Только аутентификация SQL Server)
password
Пароль учетной записи, используемой для Microsoft SQL Server. (Только аутентификация SQL Server)
database
Имя базы данных Microsoft SQL Server. Примеры:
  • employee_database
  • customer_database
tables
Список таблиц, разделенный запятыми. Подключение Microsoft SQL будет извлекать данные из всех таблиц, присутствующих в настроенной базе данных, если значение равно * . Значение по умолчанию — *. Примеры:
  • table_1, table_2
  • *

    Это поле можно обойти с помощью расширенных правил синхронизации.

fetch_size
Количество строк, извлекаемых за один запрос.
retry_count
Количество попыток повторной попытки за один не удавшийся запрос.
schema
Имя схемы Microsoft SQL Server. Значение по умолчанию — dbo.
  • dbo
  • custom_schema
ssl_enabled
Включение проверки SSL. Значение по умолчанию — False.
ssl_ca
Содержимое сертификата SSL. Если SSL отключен, значение ssl_ca будет проигнорировано.
Развернуть, чтобы увидеть пример сертификата
-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
...
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
validate_host
Включение проверки хоста. Значение по умолчанию — False.
Развертывание с помощью Docker

Вы можете развернуть подключение к Microsoft SQL в качестве самостоятельного подключения с помощью 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

Если вы запускаете службу подключения к докеризованной версии 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: mssql
    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 для получения дополнительной информации.

Документы и синхронизации
  • Таблицы без определенного первичного ключа пропускаются.
  • Если last_user_update таблицы sys.dm_db_index_usage_stats недоступно для определенной таблицы и базы данных, то все данные в этой таблице будут синхронизированы.
  • Файлы размером более 10 МБ не будут извлечены.
  • Разрешения не синхронизируются. Все документы, индексированные в развертывание Elastic, будут видны всем пользователям с доступом к этому развертыванию Elastic.
Правила синхронизации

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

Расширенные правила синхронизации

Этот коннектор поддерживает расширенные правила синхронизации для удалённого фильтрации. Эти правила охватывают сложные сценарии запросов и фильтрации, которые нельзя выразить с помощью основных правил синхронизации. Расширенные правила синхронизации определяются с помощью JSON-фрагмента DSL, специфичного для источника.

Для того, чтобы расширенные правила синхронизации вступили в силу, необходима полная синхронизация.

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

Развернуть, чтобы увидеть примерные данные

employee таблица

emp_id name age

3

John

28

10

Jane

35

14

Alex

22

* customer таблица

c_id name age

2

Elm

24

6

Pine

30

9

Oak

34

Пример: Два запроса

Эти правила извлекают все записи из обеих таблиц employee и customer. Данные из этих таблиц будут синхронизированы с Elasticsearch отдельно.

[
  {
    "tables": [
      "employee"
    ],
    "query": "SELECT * FROM employee"
  },
  {
    "tables": [
      "customer"
    ],
    "query": "SELECT * FROM customer"
  }
]

Пример: Один запрос WHERE

Это правило извлекает только записи из таблицы employee, где значение emp_id больше 5. Только эти отфильтрованные записи будут синхронизированы с Elasticsearch.

[
  {
    "tables": ["employee"],
    "query": "SELECT * FROM employee WHERE emp_id > 5"
  }
]

Пример: Один запрос JOIN

Это правило извлекает записи путём INNER JOIN между таблицами employee и customer по условию, что значение emp_id в таблице employee совпадает со значением c_id в таблице customer. Результат этих объединённых данных будет синхронизирован с Elasticsearch.

[
  {
    "tables": ["employee", "customer"],
    "query": "SELECT * FROM employee INNER JOIN customer ON employee.emp_id = customer.c_id"
  }
]

При использовании расширенных правил запрос может обойти поле конфигурации tables. Это произойдёт, если запрос указывает на таблицу, которая не отображается в конфигурации. Это также может произойти, если конфигурация указывает на * для извлечения всех таблиц, в то время как расширенное правило синхронизации запрашивает только подмножество таблиц.

Конечные тесты

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

Для проведения конечного тестирования для коннектора Microsoft SQL запустите следующую команду:

make ftest NAME=mssql

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

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

Для этого коннектора известных проблем нет. См. известные проблемы для проблем, затрагивающих все коннекторы.

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

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

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

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

Этот коннектор использует исходный код универсального коннектора для баз данных (ветвь 8.17, совместимый с Elastic 8.17).

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

© 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-ms-sql.html

Spec-Zone.ru

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