Вы можете синхронизировать 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}"
}
}