Справочник по подключению к PostgreSQL
Подключение к PostgreSQL — это подключение для PostgreSQL. Данное подключение написано на Python с использованием фреймворка подключений Elastic.
Это подключение использует исходный код общего подключения к базам данных (ветка 8.17, совместима с Elastic 8.17). Просмотрите конкретный исходный код этого подключения (ветка 8.17, совместима с Elastic 8.17).
Управляемое подключение Elastic (Elastic Cloud)
Просмотреть справку управляемого подключения Elastic
Доступность и предварительные требования
Этот коннектор доступен как управляемый коннектор Elastic в версиях Elastic 8.8.0 и выше. Чтобы использовать этот коннектор напрямую в Elastic Cloud, выполните все требования к управляемому коннектору Elastic.
Создание коннектора PostgreSQL
Использование пользовательского интерфейса
Чтобы создать новый коннектор PostgreSQL:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Коннекторы из главного меню или используйте поле глобального поиска.
- Следуйте инструкциям для создания нового родного коннектора 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 для коннектора:
-
Запустите следующую команду, заменив значения в указанных местах. Обратите внимание на
idиencodedзначения, возвращаемые из ответа:resp = client.security.create_api_key( name="my-connector-api-key", role_descriptors={ "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "my-connector-api-key", role_descriptors: { "my-connector-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "my-connector-api-key", "role_descriptors": { "my-connector-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "my-index_name", ".search-acl-filter-my-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } -
Используйте значение
encodedдля хранения секрета коннектора и обратите внимание на значениеid, возвращаемое из этого ответа:resp = client.perform_request( "POST", "/_connector/_secret", headers={"Content-Type": "application/json"}, body={ "value": "encoded_api_key" }, ) print(resp)const response = await client.transport.request({ method: "POST", path: "/_connector/_secret", body: { value: "encoded_api_key", }, }); console.log(response);POST _connector/_secret { "value": "encoded_api_key" } -
Используйте ключ API
idи секрет коннектораidдля обновления коннектора:resp = client.connector.update_api_key_id( connector_id="my_connector_id>", api_key_id="API key_id", api_key_secret_id="secret_id", ) print(resp)const response = await client.connector.updateApiKeyId({ connector_id: "my_connector_id>", api_key_id: "API key_id", api_key_secret_id: "secret_id", }); console.log(response);PUT /_connector/my_connector_id>/_api_key_id { "api_key_id": "API key_id", "api_key_secret_id": "secret_id" }
Подробные сведения обо всех доступных API коннекторов см. в документации API Elasticsearch.
Использование
Чтобы использовать этот коннектор как управляемый коннектор Elastic, используйте рабочий процесс Коннектор. См. Управляемые коннекторы 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:
- В пользовательском интерфейсе Kibana перейдите на страницу Поиск → Содержимое → Подключения из главного меню или воспользуйтесь полем глобального поиска.
- Следуйте инструкциям по созданию нового 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 для подключения:
-
Запустите следующую команду, заменив значения там, где указано. Обратите внимание на
encodedвозвращаемые значения из ответа:resp = client.security.create_api_key( name="connector_name-connector-api-key", role_descriptors={ "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": False } ] } }, ) print(resp)const response = await client.security.createApiKey({ name: "connector_name-connector-api-key", role_descriptors: { "connector_name-connector-role": { cluster: ["monitor", "manage_connector"], indices: [ { names: [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*", ], privileges: ["all"], allow_restricted_indices: false, }, ], }, }, }); console.log(response);POST /_security/api_key { "name": "connector_name-connector-api-key", "role_descriptors": { "connector_name-connector-role": { "cluster": [ "monitor", "manage_connector" ], "indices": [ { "names": [ "index_name", ".search-acl-filter-index_name", ".elastic-connectors*" ], "privileges": [ "all" ], "allow_restricted_indices": false } ] } } } - Обновите свой
config.ymlфайл с ключом APIencodedзначением.
Для получения подробной информации обо всех доступных API-интерфейсах подключения обратитесь к документации API Elasticsearch.
Использование
Для использования этого подключения как самостоятельного подключения, см. Самостоятельные подключения.
Пользователи должны установить 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