我想定期将问题数据从JIRA实例加载到我的Elastic Stack中。我不想每次从JIRA API中提取数据时都创建一个新的 flex 文档,而是更新现有的文档文档,这意味着每个JIRA问题仅应存在一个文档。更新时,我希望设置 @version 的 document_id 字段时elasticsearch output plugin字段自动增加。当前工作的设置 flex 堆栈:在Ubuntu Docker容器中运行的版本7.4.0 Logstash输入阶段:通过 http_poller input plugin 获取JIRA发行数据 Logstash筛选器阶段:根据需要使用 split filter plugin 修改JSON数据 Logstash输出阶段:将数据通过管道传输到Elasticsearch并在Kibana中使其可见我在哪里挣扎数据已在Elastic中正确注册并在Kibana中显示。与预期的一样,每个问题只有一份文档。但是,文档正在被覆盖,但是@version保持在值1。我假设使用action => "update",doc_as_upsert => true和document_id => "%{[@metadata][id]}"足以使Elasticsearch意识到需要增加文档的版本。我总体上想知道这是否是使JIRA问题数据随时间推移可搜索的正确方法。例如,我能否在过去的@version上找到JIRA票证的现状?还是@version值仅向我提供了文档更新频率的信息,而没有给我各个文档版本的值?logstash.conf(某些数据已删除并替换为标记)input { http_poller { urls => { data => { method => get url => "https://<myjira>.com/jira/rest/api/2/search?<searchJQL>" headers => { Authorization => "Basic <censored>" Accept => "application/json" "Content-Type" => "application/json" } } } request_timeout => 60 schedule => { every => "10s" } # low value for debugging codec => "json" }}filter { split { field => "issues" add_field => { "key" => "%{[issues][key]}" "Summary" => "%{[issues][fields][summary]}" [@metadata]["id"] => "%{[issues][id]}" # unique ID of a JIRA issue, the JIRA issue key could also be used } remove_field => [ "startAt", "total", "maxResults", "expand", "issues"] }}output { stdout { codec => rubydebug } elasticsearch { index => "gsep" user => ["<usr>"] password => ["<pw>"] hosts => ["elasticsearch:9200"] action => "update" document_id => "%{[@metadata][id]}" doc_as_upsert => true }}Kibana中文档数据的屏幕截图我必须检查信息,但是缺少的信息应该不相关。在屏幕截图上,您可以看到正确设置了相同的_id,但是@version保持为1。在Elasticstash / Kibana中,对于相应的issue / _id仅存在该文档。 最佳答案 @version 字段来自logstash,仅表示日志消息格式的版本。没有自动递增功能等。请注意,elasticsearch文档中还有一个 _version 字段。 _version 是concurrency方案中用于乐观锁定的自动递增值。只是要清楚一点,elasticsearch无法为您提供开箱即用的版本方面的期望。您不能依靠 _version 访问同一文档的其他版本。有一些设计模式可以在Elasticsearch中实现此类文档历史记录。但这是一个有很多答案的广泛问题,超出了这个问题的范围。关于elasticsearch - 通过Logstash更新时,Elastic Document的@version不会递增,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/60089379/
10-15 14:42