我将Logstash 1.4.1和ES1.01一起使用,并希望根据计算出的校验和替换已经索引的文档。我目前在Logstash中使用“指纹”过滤器,该过滤器根据指定的算法创建“指纹”字段。现在- 我要完成的任务是ES 根据相同的指纹值替换现有的文档 。
例如,假设我有一个指纹字段值为“ 2c9a6802e10fbcff36177e0b88993f90868fa6fa”的文档。现在- 如果要对具有相同指纹值的文档建立索引,我希望它替换索引中已经存在的 旧 文档。
我尝试将以下内容添加到“ elasticsearch-template.json”模板文件中,该文件假定由Logstash ES输出插件使用:
... "mappings" : { "_default_" : { "_id" : {"index": "not_analyzed", "store" : false, "path" : "fingerprint" }, "_all" : {"enabled" : true}, "dynamic_templates" : [ { ...
但这不起作用。我在这里做错了什么?
干杯
我将在您的logstash elasticsearch输出部分中使用document_id参数:
document_id Value type is string Default value is nil 索引的文档ID。用于覆盖具有相同ID的Elasticsearch中的现有条目。
document_id
Value type is string Default value is nil
索引的文档ID。用于覆盖具有相同ID的Elasticsearch中的现有条目。
https://www.elastic.co/guide/zh-CN/logstash/current/plugins-outputs- elasticsearch.html#plugins-outputs-elasticsearch- document_id
我认为该条目应如下所示:
document_id => "%{fingerprint}"
它使用logstash的sprintf格式将字符串替换为字段的内容:
https://www.elastic.co/guide/zh-CN/logstash/current/event-dependent- configuration.html#sprintf