【发布时间】: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 中的所有文档都包含具有相同值的 _id 和 docId。由于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
【问题讨论】: