Встречается на собеседованиях • сегодня

Как синхронизировать Elasticsearch с PostgreSQL

Для синхронизации Elasticsearch с PostgreSQL можно использовать несколько подходов:

  1. Logstash
    Настроить конвейер в Logstash с JDBC-плагином для периодического опроса PostgreSQL и отправки данных в Elasticsearch.

    ruby
    input {
      jdbc {
        jdbc_driver_library => "postgresql-42.2.5.jar"
        jdbc_driver_class => "org.postgresql.Driver"
        jdbc_connection_string => "jdbc:postgresql://localhost:5432/db"
        jdbc_user => "user"
        jdbc_password => "password"
        schedule => "* * * * *"
        statement => "SELECT * FROM table"
      }
    }
    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "pg_index"
      }
    }
  1. Debezium
    Использовать CDC (Change Data Capture) через Debezium для отслеживания изменений в PostgreSQL и отправки их в Elasticsearch через Kafka.

  2. Python-скрипты
    Написать скрипт на Python с библиотеками psycopg2 и elasticsearch, который будет синхронизировать данные по расписанию или триггеру.

    python
    from elasticsearch import Elasticsearch
    import psycopg2
    
    es = Elasticsearch()
    conn = psycopg2.connect("dbname=test user=postgres")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM table")
    for row in cursor:
        es.index(index="pg_index", body=row)

Выбор метода зависит от требований к частоте обновления и сложности инфраструктуры. Logstash подходит для простых случаев, Debezium — для реального времени, Python — для кастомных решений.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы