【问题标题】:Remove Duplicate Fields Used for document_id Before Elasticsearch in Logstash在 Logstash 中的 Elasticsearch 之前删除用于 document_id 的重复字段
【发布时间】:2015-06-01 13:38:02
【问题描述】:

我为 Logstash 编写了自己的过滤器,我正在尝试计算我自己的 document_id 类似这样的东西:

  docIdClean = "%d %s %s %s" % [ event["@timestamp"].to_f * 1000, event["type"], event["message"] ]    
  event["docId"] = Digest::MD5.hexdigest(docIdClean)

Logstash 配置如下所示:

output {
  elasticsearch {
    ...
    index => "analysis-%{+YYYY.MM.dd}"
    document_id => "%{docId}"
    template_name => "logstash_per_index"
  }
}

或多或少的小缺点是 Elasticsearch 中的所有文档都包含具有相同值的 _iddocId。由于docId 完全没有意义,因为没有人搜索 MD5 哈希,我想删除它,但我不知道如何。

docId 必须在事件命中输出时存在,否则输出无法引用它。因此,我无法事先将其删除。由于我之后无法删除它,docId 坐在那里占用空间。

我尝试设置事件字段_id,但这只会导致 Elasticsearch 中出现文档 id 不同的异常。

也许在这里解释一个文件:

  {
    "_index": "analysis-2014.09.16",
    "_type": "access",
    "_id": "022d9055423cdd0756b6cfa06886f866",
    "_score": 1,
    "_source": {
      "@timestamp": "2014-09-16T19:36:31.000+02:00",
      "type": "access",
      "tags": [
        "personalized"
      ],
      "importDate": "2014/09/17",
      "docId": "022d9055423cdd0756b6cfa06886f866"
    }
  }

编辑:
这是关于 Logstash 1.3

【问题讨论】:

    标签: elasticsearch logstash


    【解决方案1】:

    在 Logstash 1.4 中您无能为力。

    在 Logstash 1.5 中,您可以使用 @metadata fields,它不会传递给 Elasticsearch。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-15
      • 2015-07-25
      • 1970-01-01
      • 2015-03-12
      • 1970-01-01
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      相关资源
      最近更新 更多