我正在使用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.用于覆盖Elasticsearch中具有相同ID的现有条目.
https://www.elastic.co/guide/en/logstash/current/plugins-outputs-elasticsearch.html#plugins-outputs-elasticsearch-document_id
我相信参赛作品应该是这样的:
document_id => "%{fingerprint}"
它使用logstash的sprintf格式将字符串替换为字段的内容:
https://www.elastic.co/guide/en/logstash/current/event-dependent-configuration.html#sprintf