elasticsearch Logstash couchdb#u变化不';t将文档删除正确传播到Elasticsearch,elasticsearch,couchdb,logstash,elasticsearch,Couchdb,Logstash" /> elasticsearch Logstash couchdb#u变化不';t将文档删除正确传播到Elasticsearch,elasticsearch,couchdb,logstash,elasticsearch,Couchdb,Logstash" />

elasticsearch Logstash couchdb#u变化不';t将文档删除正确传播到Elasticsearch

elasticsearch Logstash couchdb#u变化不';t将文档删除正确传播到Elasticsearch,elasticsearch,couchdb,logstash,elasticsearch,Couchdb,Logstash,我正在尝试使用Logstash插件来检测我的CouchDB更改并充分更新Elasticsearch索引 文档创建/更新工作正常,但不知何故删除不起作用 以下是我的日志存储配置: input { couchdb_changes { host => "localhost" db => "products" sequence_path => ".couchdb_products_seq" type => "product" tag

我正在尝试使用Logstash插件来检测我的CouchDB更改并充分更新Elasticsearch索引

文档创建/更新工作正常,但不知何故删除不起作用

以下是我的日志存储配置:

input {
  couchdb_changes {
    host => "localhost"
    db   => "products"
    sequence_path => ".couchdb_products_seq"
    type => "product"
    tags => ["product"]
    keep_revision => true
  }
}

output {
  elasticsearch { 
    hosts => ["localhost:9200"]
    index => "products"
    # Pass the CouchDB document ID to Elastic, otherwise it is lost and Elastic generates a new one
    document_id => "%{[@metadata][_id]}"
  }
  # Debug
  stdout { 
    codec => rubydebug {
      metadata => true
    } 
  }
}
action => "%{[@metadata][action]}"
我遇到过,但是Logstash插件中不再存在“protocol”参数,我希望这样一个巨大的bug现在可以修复

在我的Logstash控制台中,当我删除CouchDB文档(从Futon中)时,我看到了这一点:

因此,它不是删除id为“15d6f519d6827a2f28de4df1d40082d5”的文档,而是替换其内容。以下是Elasticsearch中删除后的文档“15d6f519d6827a2f28de4df1d40082d5”:

curl -XGET 'localhost:9200/products/product/15d6f519d6827a2f28de4df1d40082d5?pretty'
{
  "_index" : "products",
  "_type" : "product",
  "_id" : "15d6f519d6827a2f28de4df1d40082d5",
  "_version" : 3,
  "found" : true,
  "_source" : {
    "@version" : "1",
    "@timestamp" : "2016-05-13T14:06:55.734Z",
    "type" : "product",
    "tags" : [ "product" ]
  }
}
知道为什么删除不起作用吗?这是couchdb_changes插件的一个bug吗?elasticsearch插件

有关信息,请参阅以下我的应用程序版本: Elasticsearch 2.3.2 日志存储2.3.2
ApacheCouchDB 1.6.1

我想我找到了问题所在。 我必须在logstash output.elasticsearch配置中手动添加此行:

input {
  couchdb_changes {
    host => "localhost"
    db   => "products"
    sequence_path => ".couchdb_products_seq"
    type => "product"
    tags => ["product"]
    keep_revision => true
  }
}

output {
  elasticsearch { 
    hosts => ["localhost:9200"]
    index => "products"
    # Pass the CouchDB document ID to Elastic, otherwise it is lost and Elastic generates a new one
    document_id => "%{[@metadata][_id]}"
  }
  # Debug
  stdout { 
    codec => rubydebug {
      metadata => true
    } 
  }
}
action => "%{[@metadata][action]}"
以便将“删除”从元数据传递到Elasticsearch

现在upsert还有另一个问题,但它在一个

编辑:为了绕过UPSERT问题,我实际上将配置更改为(主要是添加一个字段来存储操作是否为删除):

我远不是Logstash/Elasticsearch方面的专家,但这在目前看来是可行的