【问题标题】:Syncing the data from mongoDB to elasticsearch using Logstash使用 Logstash 将数据从 mongoDB 同步到 elasticsearch
【发布时间】:2020-07-06 22:10:19
【问题描述】:

我正在尝试将 mongoDB 数据库同步到 elasticsearch。我正在使用logstash-input-mongoDblogstash-output-elasticsearch 插件。

问题是 mongoDb 插件无法从 mongodb 中插入的文档中提取所有信息,因此我看到只有少数字段被插入到弹性搜索中。而且我还将整个查询作为弹性搜索索引中的日志。我试图为logstash操作配置文件中的过滤器并将输入更改为elasticsearch,但无法使其工作。

任何帮助或建议都会很棒。



编辑
Mongo 架构:

A:{
  B: 'sometext',
  C: {G: 'someText', H:'some text'}
},
D:[
 {E:'sometext',F:'sometext'},
 {E:'sometext',F:'sometext'},
 {E:'sometext',F:'sometext'}
]

插件:

    input {
    mongodb {
        uri => 'mongodb://localhost:27017/testDB'
        placeholder_db_dir => '/opt/logstash-mongodb/'
        placeholder_db_name => 'logstash_sqlite.db'
        collection => 'testCOllection'
        batch_size => 1000
    }
}
output {
        stdout {
                codec => rubydebug
        }
        elasticsearch {
                action => "index"
                index => "testdb_testColl"
                hosts => ["localhost:9200"]
        }
}

输出到弹性:

{
    //some metadata
    A_B: 'sometext',
    A_C_G: 'someText',
    A_C_H: 'some text',
    log_entry: 'contains complete document inserted to mongoDB'
}

我们没有在弹性中获得 mongo 集合的属性 D。 希望这能更详细地解释问题。

【问题讨论】:

  • 了解您在 mongo 中的文档架构、Logstash 输入插件的配置以及您最终进入 Elasticsearch 的内容会有所帮助。
  • @glenacota 我已经用相关信息更新了帖子。
  • 您好,您查看我的回复了吗?有什么帮助吗?
  • 嗨@glenacota 感谢您的回复,但我计划采用一些不同的方法,所以这个问题不再相关。但无论如何,谢谢你的帮助。

标签: mongodb elasticsearch plugins logstash


【解决方案1】:

因为您的配置对我来说看起来不错,所以我检查了phutchins/logstash-input-mongodb repo 的问题,发现了这个:“array not stored to elasticsearch”,它几乎描述了您的问题。这仍然是一个悬而未决的问题,但您可能想尝试the workaround suggested by ivancruzbht。这种解决方法使用ruby Logstash 过滤器来解析log_entry 字段,您还确认该字段具有所有字段 - 包括D

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-06-07
    • 2021-04-21
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多