Учебник по самонастраиваемому коннектору PostgreSQL
В этом руководстве вы пройдете процесс создания автономного коннектора для источника данных PostgreSQL. Вы будете использовать рабочий процесс автономного коннектора в интерфейсе Kibana. Это означает, что вы будете развертывать коннектор на собственной инфраструктуре. Для получения дополнительной информации об этом коннекторе обратитесь к справке по коннектору Elastic PostgreSQL.
Вы будете использовать фреймворк коннекторов, чтобы создать коннектор. В этом упражнении вы будете работать как в терминале (или вашем IDE), так и в интерфейсе Kibana.
Если вы хотите развернуть автономный коннектор для другого источника данных, используйте это руководство как шаблон. Обратитесь к списку доступных автономных коннекторов.
Хотите быстро начать тестирование автономного коннектора с помощью Docker Compose? Обратитесь к этому файлу README в репозитории elastic/connectors для получения дополнительной информации.
Предварительные требования
Предварительные требования Elastic
Сначала убедитесь, что вы удовлетворяете предварительным требованиям к автономным коннекторам.
Предварительные требования PostgreSQL
Вам необходимо:
- Версия PostgreSQL 11+.
- Таблицы должны принадлежать пользователю PostgreSQL.
- Требуются привилегии базы данных для индексации всех таблиц базы данных.
Вы должны включить запись времени коммита транзакций PostgreSQL. В противном случае все данные будут индексироваться при каждом синхронизации. По умолчанию track_commit_timestamp является off.
Включите это, выполнив следующую команду в командной строке сервера PostgreSQL:
ALTER SYSTEM SET track_commit_timestamp = on;
Затем перезапустите сервер PostgreSQL.
Шаги
Для завершения этого руководства вам необходимо выполнить следующие шаги:
Создать индекс Elasticsearch
Коннекторы Elastic позволяют создавать индексируемые, только для чтения копии ваших источников данных в Elasticsearch. Первым шагом в настройке вашего автономного коннектора является создание индекса.
В интерфейсе Kibana перейдите к Поиск > Контент > Индексы Elasticsearch из главного меню или воспользуйтесь полем глобального поиска.
Создайте новый индекс коннектора:
- В разделе Выберите метод загрузки выберите Коннектор.
- Выберите PostgreSQL из списка коннекторов.
- Назовите свой индекс и, необязательно, измените анализатор языка, чтобы он соответствовал естественному языку вашего источника данных. (Имя индекса, которое вы укажете, автоматически префиксруется с
search-.) - Сохраните изменения.
Индекс создан и готов к настройке.
Настройка коннектора
После создания индекса вы можете настроить коннектор. Вы будете проходить этот процесс в интерфейсе.
- Измените имя и описание коннектора. Это поможет вашей команде идентифицировать коннектор.
-
Скопируйте и измените код службы коннектора. Для этого примера мы будем использовать фреймворк Python. Следуйте этим шагам:
- Скопируйте или создайте вилку этого репозитория локально с помощью следующей команды:
git clone https://github.com/elastic/connectors. - Откройте файл конфигурации
config.ymlв вашем редакторе по выбору. -
Замените значения для
host,api_keyиconnector_idна значения, которые вы собрали ранее. Используйте значениеservice_typepostgresqlдля этого коннектора.Развернуть чтобы увидеть пример файла
config.ymlЗамените значения для
host,api_keyиconnector_idна свои собственные значения. Используйте значениеservice_typepostgresqlдля этого коннектора.elasticsearch: host: <https://<my-elastic-deployment.es.us-west2.gcp.elastic-cloud.com>> # Your Elasticsearch endpoint api_key: '<YOUR-API-KEY>' # Your top-level Elasticsearch API key ... connectors: - connector_id: "<YOUR-CONNECTOR-ID>" api_key: "'<YOUR-API-KEY>" # Your scoped connector index API key (optional). If not provided, the top-level API key is used. service_type: "postgresql" # Self-managed connector settings connector_id: '<YOUR-CONNECTOR-ID>' # Your connector ID service_type: 'postgresql' # The service type for your connector sources: # mongodb: connectors.sources.mongo:MongoDataSource # s3: connectors.sources.s3:S3DataSource # dir: connectors.sources.directory:DirectoryDataSource # mysql: connectors.sources.mysql:MySqlDataSource # network_drive: connectors.sources.network_drive:NASDataSource # google_cloud_storage: connectors.sources.google_cloud_storage:GoogleCloudStorageDataSource # azure_blob_storage: connectors.sources.azure_blob_storage:AzureBlobStorageDataSource postgresql: connectors.sources.postgresql:PostgreSQLDataSource # oracle: connectors.sources.oracle:OracleDataSource # sharepoint: connectors.sources.sharepoint:SharepointDataSource # mssql: connectors.sources.mssql:MSSQLDataSource # jira: connectors.sources.jira:JiraDataSource
- Скопируйте или создайте вилку этого репозитория локально с помощью следующей команды:
Запустить службу коннектора
Теперь, когда вы настроили код коннектора, вы можете запустить службу коннектора.
В вашем терминале или IDE:
-
cdв корневой каталог вашей вилкиconnectors. - Запустите следующую команду:
make run.
Служба коннектора должна быть запущена. В интерфейсе вы увидите сообщение о том, что коннектор успешно подключился к Elasticsearch.
Здесь мы работаем локально. В производственных установках вы развернете службу коннектора на собственной инфраструктуре. Если вы предпочитаете использовать Docker, обратитесь к документации репозитория для инструкций.
Синхронизировать источник данных PostgreSQL
Введите данные о вашем источнике данных PostgreSQL
После настройки коннектора вы можете использовать его для индексирования вашего источника данных.
Теперь вы можете ввести данные о вашем экземпляре PostgreSQL в интерфейсе Kibana.
Введите следующую информацию:
- Хост. Адрес хоста сервера для вашего экземпляра PostgreSQL.
- Порт. Номер порта для вашего экземпляра PostgreSQL.
- Имя пользователя. Имя пользователя PostgreSQL.
- Пароль. Пароль для этого пользователя.
- База данных. Название базы данных PostgreSQL.
- Список таблиц, разделенных запятыми.
*получит данные из всех таблиц в настроенной базе данных.
После ввода всех этих данных выберите Сохранить конфигурацию.
Запустить синхронизацию
Если вы перейдете на вкладку Обзор в интерфейсе Kibana, вы сможете увидеть статус загрузки коннектора. Теперь он должен измениться на Настроен.
Пришло время запустить синхронизацию, выбрав кнопку Синхронизация.
Если вы перейдете в окно терминала, где вы запускаете службу коннектора, вы увидите вывод, подобный следующему:
[FMWK][13:22:26][INFO] Fetcher <create: 499 update: 0 |delete: 0> [FMWK][13:22:26][INF0] Fetcher <create: 599 update: 0 |delete: 0> [FMWK][13:22:26][INFO] Fetcher <create: 699 update: 0 |delete: 0> ... [FMWK][23:22:28][INF0] [oRXQwYYBLhXTs-qYpJ9i] Sync done: 3864 indexed, 0 deleted. (27 seconds)
Это подтверждает, что коннектор получил записи из вашей таблицы (таблиц) PostgreSQL и преобразовал их в документы в вашем индексе Elasticsearch.
Проверьте ваши документы Elasticsearch на вкладке Документы в интерфейсе Kibana.
Если вы удовлетворены результатами, установите график периодической синхронизации на вкладке Планирование. Это гарантирует, что ваши индексируемые данные в Elasticsearch всегда актуальны с изменениями в вашем источнике данных PostgreSQL.
© 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-postgresql-connector-client-tutorial.html