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

Справочник по подключению к PostgreSQL

Подключение к PostgreSQL — это подключение для PostgreSQL. Данное подключение написано на Python с использованием фреймворка подключений Elastic.

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

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

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

Управляемое подключение Elastic (Elastic Cloud)

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

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

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

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

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

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

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

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

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

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

Например:

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-postgresql-connector
{
  "index_name": "my-elasticsearch-index",
  "name": "Content synced from PostgreSQL",
  "service_type": "postgresql",
  "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, используйте рабочий процесс Коннектор. См. Управляемые коннекторы Elastic.

Пользователи должны установить track_commit_timestamp на on. Для этого запустите ALTER SYSTEM SET track_commit_timestamp = on; на сервере PostgreSQL.

Для дополнительных операций см. <←esconnectors-usage>>.

Пример работы с коннектором от начала до конца см. в Практическом руководстве.

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

Версии PostgreSQL с 11 по 15 совместимы с коннектором Elastic.

Настройка

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

Хост

Адрес хоста сервера, где размещен экземпляр PostgreSQL. Примеры:

  • 192.158.1.38
  • demo.instance.demo-region.demo.service.com
Порт

Порт, на котором размещен экземпляр PostgreSQL. Примеры:

  • 5432 (по умолчанию)
Имя пользователя
Имя пользователя учетной записи PostgreSQL.
Пароль
Пароль учетной записи PostgreSQL.
База данных

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

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

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

  • table_1, table_2
  • *

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

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

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

Развернуть, чтобы увидеть пример сертификата
-----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-----

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

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

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

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

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

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

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

Пример данных

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

Таблица 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

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

Запросы к нескольким таблицам

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

Запросы к нескольким таблицам с id_columns

В 8.15.0 мы добавили новое необязательное поле id_columns в наши расширенные правила синхронизации для коннектора PostgreSQL. Используйте поле id_columns для импорта таблиц, у которых нет первичного ключа. Включите имена уникальных полей, чтобы коннектор мог использовать их для генерации уникальных идентификаторов документов.

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

В этом примере используется поле id_columns для указания уникальных полей emp_id и c_id для таблиц employee и customer соответственно.

Фильтрация данных с помощью WHERE условия

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

JOIN операции

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

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

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

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

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

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

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

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

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

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

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

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

Создание подключения к PostgreSQL

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

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

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

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

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

Например:

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

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

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

Пользователи должны установить track_commit_timestamp на on. Для этого выполните ALTER SYSTEM SET track_commit_timestamp = on; на сервере PostgreSQL.

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

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

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

Версии PostgreSQL с 11 по 15 совместимы с фреймворками подключения Elastic.

Настройка

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

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

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

host

Адрес хоста сервера, где размещен экземпляр PostgreSQL. Примеры:

  • 192.158.1.38
  • demo.instance.demo-region.demo.service.com
port
Порт, на котором размещен экземпляр PostgreSQL. Примеры:
  • 5432
  • 9090
username
Имя пользователя учетной записи PostgreSQL.
password
Пароль учетной записи PostgreSQL.
database

Имя базы данных PostgreSQL. Примеры:

  • employee_database
  • customer_database
schema
Схема базы данных PostgreSQL.
tables
Список таблиц, разделенных запятыми. Подключение PostgreSQL извлечет данные из всех таблиц, присутствующих в настроенной базе данных, если значение равно * . Значение по умолчанию - *. Примеры:
  • table_1, table_2
  • *

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

ssl_enabled
Включить проверку SSL. Значение по умолчанию - True.
ssl_ca

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

Развернуть для просмотра примера сертификата
-----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-----

Развертывание с использованием Docker

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

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

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

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

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

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

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

Пример данных

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

employee таблица

emp_id name age

3

Иван

28

10

Ева

35

14

Артём

22

customer таблица

c_id name age

2

Ольха

24

6

Сосна

30

9

Дуб

34

Примеры правил синхронизации расширенного типа

Запросы к нескольким таблицам

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

Запросы к нескольким таблицам с id_columns

В версии 8.15.0 мы добавили новое необязательное поле id_columns в правила синхронизации расширенного типа для подключения PostgreSQL. Используйте поле id_columns для импорта таблиц без первичного ключа. Укажите имена уникальных полей, чтобы подключение могло использовать их для генерации уникальных идентификаторов документов.

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

В этом примере используется поле id_columns для указания уникальных полей emp_id и c_id для таблиц employee и customer соответственно.

Фильтрация данных с помощью клаузы WHERE

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

JOIN операции

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

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

Конечное тестирование

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

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

$ make ftest NAME=postgresql

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

make ftest NAME=postgresql 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-postgresql.html

Spec-Zone.ru

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