首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Logstash输出中document_id的正确语法

Logstash输出中document_id的正确语法
EN

Stack Overflow用户
提问于 2020-05-28 09:04:00
回答 1查看 950关注 0票数 1

因此,我试图使用logstash将数据从MongoDB转移到elasticsearch。我不希望重复的内容被写入,所以我使用doc_as_upsert => true和输出中的document_id参数。这是我的logstash配置文件。

代码语言:javascript
运行
复制
input {
  jdbc{
    jdbc_driver_class => "com.dbschema.MongoJdbcDriver"
    jdbc_driver_library => "/path/to/mongojdbc1.8.jar"
    jdbc_user => ""
    jdbc_password => ""
    jdbc_connection_string => "jdbc:mongodb://127.0.0.1:27017/db1"
    statement => "db1.coll1.find({ },{'_id': false})"
  }
}

output {
  elasticsearch {
    hosts => ["http://127.0.0.1:9200"]
    index => "test"
    user => ""
    password => ""
    doc_as_upsert => true
    document_id => "%{datetime}"
  }
}

如您所见,我正在尝试使用MongoDB文档的datetime字段(它是一个字符串)作为elasticsearch的文档id。但是,插入到Elasticsearch中的文档是这样的:

代码语言:javascript
运行
复制
{
    "_index" : "test",
    "_type" : "_doc",
    "_id" : "%{datetime}",
    "_score" : 1.0,
    "_source" : {
        "@timestamp" : "2020-05-28T08:53:28.244Z",
        "document" : {
            # .. some fields ..
            "datetime" : "2020-05-28 14:22:29.133363",
            # .. some fields ..
        },
        "@version" : "1"
    }
}

不使用作为_id的日期时间字段的值,而是使用字符串%{ datetime }作为ID。如何解决这个问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-28 09:05:54

document_id字段不在根级,因此需要将语法更改为:

代码语言:javascript
运行
复制
document_id => "%{[document][datetime}}"
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62060896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档