Синхронизировать MongoDB с ElasticSearch - PullRequest
1 голос
/ 17 июня 2019

Я хочу синхронизировать мои MongoDB данные с ElasticSearch, я прочитал много постов, в которых рассказывается о плагине Riversearch River и монго-коннекторе, но все они устарели для mongo 4 иasticsearch 7!

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

1 Ответ

1 голос
/ 17 июня 2019

Вы можете синхронизировать MongoDB и Elasticsearch с Logstash;Синхронизация является одним из основных приложений Logstash.После установки Logstash все, что вам нужно сделать, это указать конвейер для вашего варианта использования: один или несколько входных источников (MongoDB в вашем случае) и один или несколько выходных приемников (Elasticsearchв вашем случае), поместите как файл конфигурации (пример ниже) в директорию Logstash pipeline ;Logstash позаботится обо всем остальном.

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

В конце ваш конвейер может выглядеть примерно так:

input {
  mongodb {
    uri => 'mongodb://10.0.0.30/my-logs?ssl=true'
    placeholder_db_dir => '/opt/logstash-mongodb/'
    placeholder_db_name => 'logstash_sqlite.db'
    collection => 'events_'
    batch_size => 5000
  }
}
output {
  stdout {
    codec => rubydebug #outputs the same thing as elasticsearch in stdout to facilitate debugging
  }
  elasticsearch {
    hosts => "localhost:9200"
    index => "target_index"
    document_type => "document_type"
    document_id => "%{id}"
  }
}
...