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

Справочник по соединителю Elastic для MySQL

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

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

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

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

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

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

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

У этого коннектора нет дополнительных предварительных условий помимо общих требований, указанных выше.

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

Этот коннектор совместим с MySQL 5.6 и более поздними версиями.

Коннектор также совместим с базами данных MariaDB, совместимыми с вышеперечисленными.

Источник данных и ваше развертывание Elastic должны иметь возможность обмениваться данными друг с другом по сети.

Создание коннектора MySQL

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

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

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

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

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

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

Например:

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-mysql-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from MySQL",
  "service_type": "mysql",
  "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 коннекторов см. в документации API Elasticsearch.

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

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

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

Настройка

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

Хост

IP-адрес или доменное имя хоста MySQL, без порта. Примеры:

  • 192.158.1.38
  • localhost
Порт

Порт хоста MySQL. Примеры:

  • 3306
  • 3307
Имя пользователя

Имя пользователя MySQL, которое будет использовать коннектор.

Пользователь должен иметь доступ к указанной базе данных. Рекомендуется создавать отдельного, только для чтения, пользователя для каждого коннектора.

Пароль
Пароль MySQL, который будет использовать коннектор.
База данных

База данных MySQL, которую нужно синхронизировать. База данных должна быть доступна с использованием указанного имени пользователя и пароля.

Примеры:

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

Таблицы в указанной базе данных, которые нужно синхронизировать. Одно или несколько имён таблиц, разделённых запятыми. Таблицы должны быть доступны с использованием указанного имени пользователя и пароля.

Примеры:

  • furniture, food, toys
  • laptops

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

Включить SSL
Включить ли проверку SSL. Значение по умолчанию – True.
Сертификат SSL

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

Развернуть, чтобы увидеть пример сертификата
-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
AlVTMQwwCgYDVQQKEwNJQk0xFjAUBgNVBAsTDURlZmF1bHROb2RlMDExFjAUBgNV
BAsTDURlZmF1bHRDZWxsMDExGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxEjAQ
BgNVBAMTCWxvY2FsaG9zdDAeFw0yMTEyMTQyMjA3MTZaFw0yMjEyMTQyMjA3MTZa
MF8xCzAJBgNVBAYTAlVTMQwwCgYDVQQKEwNJQk0xFjAUBgNVBAsTDURlZmF1bHRO
b2RlMDExFjAUBgNVBAsTDURlZmF1bHRDZWxsMDExEjAQBgNVBAMTCWxvY2FsaG9z
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMv5HCsJZIpI5zCy+jXV
z6lmzNc9UcVSEEHn86h6zT6pxuY90TYeAhlZ9hZ+SCKn4OQ4GoDRZhLPTkYDt+wW
CV3NTIy9uCGUSJ6xjCKoxClJmgSQdg5m4HzwfY4ofoEZ5iZQ0Zmt62jGRWc0zuxj
hegnM+eO2reBJYu6Ypa9RPJdYJsmn1RNnC74IDY8Y95qn+WZj//UALCpYfX41hko
i7TWD9GKQO8SBmAxhjCDifOxVBokoxYrNdzESl0LXvnzEadeZTd9BfUtTaBHhx6t
njqqCPrbTY+3jAbZFd4RiERPnhLVKMytw5ot506BhPrUtpr2lusbN5svNXjuLeea
MMUCAwEAAaOBoDCBnTATBgNVHSMEDDAKgAhOatpLwvJFqjAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwVAYDVR0RBE0wS4E+UHJvZmlsZVVVSUQ6QXBwU3J2
MDEtQkFTRS05MDkzMzJjMC1iNmFiLTQ2OTMtYWI5NC01Mjc1ZDI1MmFmNDiCCWxv
Y2FsaG9zdDARBgNVHQ4ECgQITzqhA5sO8O4wDQYJKoZIhvcNAQELBQADggEBAKR0
gY/BM69S6BDyWp5dxcpmZ9FS783FBbdUXjVtTkQno+oYURDrhCdsfTLYtqUlP4J4
CHoskP+MwJjRIoKhPVQMv14Q4VC2J9coYXnePhFjE+6MaZbTjq9WaekGrpKkMaQA
iQt5b67jo7y63CZKIo9yBvs7sxODQzDn3wZwyux2vPegXSaTHR/rop/s/mPk3YTS
hQprs/IVtPoWU4/TsDN3gIlrAYGbcs29CAt5q9MfzkMmKsuDkTZD0ry42VjxjAmk
xw23l/k8RoD1wRWaDVbgpjwSzt+kl+vJE/ip2w3h69eEZ9wbo6scRO5lCO2JM4Pr
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
Известные проблемы

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

  • Обновление с коннектора технического превью (8.7 или ранее) до 8.8 приведёт к недействительности конфигурации коннектора MySQL.

    Коннекторы MySQL до версии 8.8 могут отсутствовать некоторые поля конфигурации, необходимые для работы коннектора. Если вы хотите продолжить использование коннектора MySQL после обновления с версии 8.7 или более ранней, выполните скрипт ниже, чтобы исправить конфигурацию коннектора. Это заполнит конфигурацию недостающими полями. Необходимая вспомогательная информация для конфигурации затем будет автоматически добавлена управляемым коннектором.

    resp = client.update(
        index=".elastic-connectors",
        id="connector_id",
        doc={
            "configuration": {
                "tables": {
                    "type": "list",
                    "value": "*"
                },
                "ssl_enabled": {
                    "type": "bool",
                    "value": False
                },
                "ssl_ca": {
                    "type": "str",
                    "value": ""
                },
                "fetch_size": {
                    "type": "int",
                    "value": 50
                },
                "retry_count": {
                    "type": "int",
                    "value": 3
                }
            }
        },
    )
    print(resp)
    const response = await client.update({
      index: ".elastic-connectors",
      id: "connector_id",
      doc: {
        configuration: {
          tables: {
            type: "list",
            value: "*",
          },
          ssl_enabled: {
            type: "bool",
            value: false,
          },
          ssl_ca: {
            type: "str",
            value: "",
          },
          fetch_size: {
            type: "int",
            value: 50,
          },
          retry_count: {
            type: "int",
            value: 3,
          },
        },
      },
    });
    console.log(response);
    POST /.elastic-connectors/_update/connector_id
    {
      "doc" : {
        "configuration": {
          "tables": {
            "type": "list",
            "value": "*"
          },
          "ssl_enabled": {
            "type": "bool",
            "value": false
          },
          "ssl_ca": {
            "type": "str",
            "value": ""
          },
          "fetch_size": {
            "type": "int",
            "value": 50
          },
          "retry_count": {
            "type": "int",
            "value": 3
          }
        }
      }
    }
  • Обновление до 8.8 не мигрирует правила синхронизации MySQL.

    После обновления вам необходимо пересоздать правила синхронизации.

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

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

Ниже описано поведение по умолчанию при синхронизации для этого коннектора. Используйте правила синхронизации и сборные конвейеры для настройки синхронизации для конкретных индексов.

Все записи в базе данных MySQL, включённые в вашу конфигурацию коннектора, извлекаются и преобразуются в документы в вашем индексе Elasticsearch.

  • Для каждой строки в вашей таблице базы данных MySQL коннектор создаёт один документ Elasticsearch.
  • Для каждого столбца коннектор преобразует столбец в поле Elasticsearch.
  • Elasticsearch динамически сопоставляет типы данных MySQL с типами данных Elasticsearch.
  • Таблицы без определённого первичного ключа пропускаются.
  • Значения полей, представляющие другие записи, заменяются первичным ключом этой записи (составные первичные ключи объединяются с _).

Карта Elasticsearch создаётся при создании первого документа.

Каждая синхронизация — это "полная" синхронизация.

Для каждой обнаруженной строки MySQL:

  • Если она не существует, документ создаётся в Elasticsearch.
  • Если она уже существует в Elasticsearch, документ Elasticsearch заменяется, и версия увеличивается.
  • Если существующий документ Elasticsearch больше не существует в таблице MySQL, он удаляется из Elasticsearch.
  • Файлы размером более 10 МБ не будут извлечены
  • Разрешения не синхронизируются по умолчанию. Все документы, индексированные в развертывании Elastic, будут видны всем пользователям с доступом к этому развертыванию.
Правила синхронизации

В следующих разделах описаны правила синхронизации для этого коннектора.

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

Расширенные правила для MySQL могут использоваться для передачи произвольных SQL-запросов экземпляру MySQL.

Вам необходимо указать таблицы, используемые в вашем пользовательском запросе, в поле «таблицы».

Например:

[
    {
        "tables": ["table1", "table2"],
        "query": "SELECT ... FROM ..."
    }
]

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

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

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

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

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

Самоуправляемый коннектор

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

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

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

Дополнительных предварительных требований, помимо общих, перечисленных выше, нет.

Создать коннектор MySQL

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

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

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

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

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

Например:

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

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

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

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

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

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

Этот коннектор совместим с MySQL 5.6 и выше.

Коннектор также совместим с базами данных MariaDB, совместимыми с вышеперечисленными.

Источник данных и ваше развертывание Elastic должны иметь возможность обмениваться данными через сеть.

Настройка

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

Хост

IP-адрес или доменное имя хоста MySQL, без порта. Примеры:

  • 192.158.1.38
  • localhost
Порт

Порт хоста MySQL. Примеры:

  • 3306
  • 3307
Имя пользователя
Имя пользователя MySQL, которое будет использовать коннектор.
Пароль
Пароль MySQL, который будет использовать коннектор.
База данных

База данных MySQL, которую нужно синхронизировать. К базе данных должен быть доступ с использованием указанного имени пользователя и пароля.

Примеры:

  • products
  • orders
Таблицы

Таблицы в указанной базе данных, которые нужно синхронизировать. Одно или несколько имён таблиц, разделенные запятыми. К таблицам должен быть доступ с использованием указанного имени пользователя и пароля.

Примеры:

  • furniture, food, toys
  • laptops
Включить SSL
Нужно ли включить проверку SSL. Значение по умолчанию - True.
Сертификат SSL

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

Развернуть для просмотра примера сертификата
-----BEGIN CERTIFICATE-----
MIID+jCCAuKgAwIBAgIGAJJMzlxLMA0GCSqGSIb3DQEBCwUAMHoxCzAJBgNVBAYT
AlVTMQwwCgYDVQQKEwNJQk0xFjAUBgNVBAsTDURlZmF1bHROb2RlMDExFjAUBgNV
BAsTDURlZmF1bHRDZWxsMDExGTAXBgNVBAsTEFJvb3QgQ2VydGlmaWNhdGUxEjAQ
BgNVBAMTCWxvY2FsaG9zdDAeFw0yMTEyMTQyMjA3MTZaFw0yMjEyMTQyMjA3MTZa
MF8xCzAJBgNVBAYTAlVTMQwwCgYDVQQKEwNJQk0xFjAUBgNVBAsTDURlZmF1bHRO
b2RlMDExFjAUBgNVBAsTDURlZmF1bHRDZWxsMDExEjAQBgNVBAMTCWxvY2FsaG9z
dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMv5HCsJZIpI5zCy+jXV
z6lmzNc9UcVSEEHn86h6zT6pxuY90TYeAhlZ9hZ+SCKn4OQ4GoDRZhLPTkYDt+wW
CV3NTIy9uCGUSJ6xjCKoxClJmgSQdg5m4HzwfY4ofoEZ5iZQ0Zmt62jGRWc0zuxj
hegnM+eO2reBJYu6Ypa9RPJdYJsmn1RNnC74IDY8Y95qn+WZj//UALCpYfX41hko
i7TWD9GKQO8SBmAxhjCDifOxVBokoxYrNdzESl0LXvnzEadeZTd9BfUtTaBHhx6t
njqqCPrbTY+3jAbZFd4RiERPnhLVKMytw5ot506BhPrUtpr2lusbN5svNXjuLeea
MMUCAwEAAaOBoDCBnTATBgNVHSMEDDAKgAhOatpLwvJFqjAdBgNVHSUEFjAUBggr
BgEFBQcDAQYIKwYBBQUHAwIwVAYDVR0RBE0wS4E+UHJvZmlsZVVVSUQ6QXBwU3J2
MDEtQkFTRS05MDkzMzJjMC1iNmFiLTQ2OTMtYWI5NC01Mjc1ZDI1MmFmNDiCCWxv
Y2FsaG9zdDARBgNVHQ4ECgQITzqhA5sO8O4wDQYJKoZIhvcNAQELBQADggEBAKR0
gY/BM69S6BDyWp5dxcpmZ9FS783FBbdUXjVtTkQno+oYURDrhCdsfTLYtqUlP4J4
CHoskP+MwJjRIoKhPVQMv14Q4VC2J9coYXnePhFjE+6MaZbTjq9WaekGrpKkMaQA
iQt5b67jo7y63CZKIo9yBvs7sxODQzDn3wZwyux2vPegXSaTHR/rop/s/mPk3YTS
hQprs/IVtPoWU4/TsDN3gIlrAYGbcs29CAt5q9MfzkMmKsuDkTZD0ry42VjxjAmk
xw23l/k8RoD1wRWaDVbgpjwSzt+kl+vJE/ip2w3h69eEZ9wbo6scRO5lCO2JM4Pr
7RhLQyWn2u00L7/9Omw=
-----END CERTIFICATE-----
Известные проблемы

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

  • Обновление с технического предварительного коннектора (8.7 или ранее) до 8.8 приведёт к тому, что конфигурация коннектора MySQL станет недействительной.

    В конфигурациях коннекторов MySQL, предшествующих 8.8, могут отсутствовать некоторые поля конфигурации, необходимые для работы коннектора. Если вы хотите продолжить использование вашего коннектора MySQL после обновления с версии 8.7 или ранее, выполните скрипт ниже, чтобы исправить конфигурацию коннектора. Это заполнит конфигурацию недостающими полями. Дополнительная информация, необходимая для конфигурации, затем будет автоматически добавлена самоуправляемым коннектором.

    resp = client.update(
        index=".elastic-connectors",
        id="connector_id",
        doc={
            "configuration": {
                "tables": {
                    "type": "list",
                    "value": "*"
                },
                "ssl_enabled": {
                    "type": "bool",
                    "value": False
                },
                "ssl_ca": {
                    "type": "str",
                    "value": ""
                },
                "fetch_size": {
                    "type": "int",
                    "value": 50
                },
                "retry_count": {
                    "type": "int",
                    "value": 3
                }
            }
        },
    )
    print(resp)
    const response = await client.update({
      index: ".elastic-connectors",
      id: "connector_id",
      doc: {
        configuration: {
          tables: {
            type: "list",
            value: "*",
          },
          ssl_enabled: {
            type: "bool",
            value: false,
          },
          ssl_ca: {
            type: "str",
            value: "",
          },
          fetch_size: {
            type: "int",
            value: 50,
          },
          retry_count: {
            type: "int",
            value: 3,
          },
        },
      },
    });
    console.log(response);
    POST /.elastic-connectors/_update/connector_id
    {
      "doc" : {
        "configuration": {
          "tables": {
            "type": "list",
            "value": "*"
          },
          "ssl_enabled": {
            "type": "bool",
            "value": false
          },
          "ssl_ca": {
            "type": "str",
            "value": ""
          },
          "fetch_size": {
            "type": "int",
            "value": 50
          },
          "retry_count": {
            "type": "int",
            "value": 3
          }
        }
      }
    }
  • Обновление до 8.8 не мигрирует правила синхронизации MySQL.

    После обновления необходимо создать правила синхронизации заново.

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

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

Ниже описано стандартное поведение синхронизации для этого коннектора. Используйте правила синхронизации и справочные конвейеры, чтобы настроить синхронизацию для определённых индексов.

Все записи в базе данных MySQL, включённые в конфигурацию вашего коннектора, извлекаются и преобразуются в документы в вашем индексе Elasticsearch.

  • Для каждой строки в вашей таблице базы данных MySQL коннектор создаёт один документ Elasticsearch.
  • Для каждого столбца коннектор преобразует столбец в поле Elasticsearch.
  • Elasticsearch динамически отображает типы данных MySQL на типы данных Elasticsearch.
  • Таблицы без определённого первичного ключа пропускаются.
  • Значения полей, представляющие другие записи, заменяются первичным ключом этой записи (составные первичные ключи объединяются с _).

Карта Elasticsearch создаётся при создании первого документа.

Каждая синхронизация — это "полная" синхронизация.

Для каждой найденной строки MySQL:

  • Если она не существует, документ создаётся в Elasticsearch.
  • Если она уже существует в Elasticsearch, документ Elasticsearch заменяется, и версия увеличивается.
  • Если существующий документ Elasticsearch больше не существует в таблице MySQL, он удаляется из Elasticsearch.
Развертывание с помощью Docker

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

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

В следующих разделах описаны Правила синхронизации для данного коннектора.

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

Расширенные правила для MySQL позволяют передавать произвольные SQL-запросы в экземпляр MySQL.

Вам необходимо указать таблицы, используемые в вашем пользовательском запросе, в поле "tables".

Например:

[
    {
        "tables": ["table1", "table2"],
        "query": "SELECT ... FROM ..."
    }
]

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

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

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

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

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

© 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-mysql.html

Spec-Zone.ru

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