elasticsearch logstash | elasticsearch-保持原始插入顺序
这可以作为elasticsearch logstash | elasticsearch-保持原始插入顺序,elasticsearch,logstash,elasticsearch,Logstash,这可以作为logstash或elasticsearch问题来解决 logstash正在使用基于我的日志条目的记录填充我的elasticsearch索引。典型的日志条目看起来有点像: 2001-01-01 01:01:01.001 [INFO] Message abc defg hijkl mnopq rstu vwxyz 这被logstash解析为一个文档,其中包含@时间戳级别和消息 要尝试以正确的顺序重新组装日志,可以通过@timestamp对记录进行排序。但是,在同一毫秒内记录两个条目(如
logstash
或elasticsearch
问题来解决
logstash
正在使用基于我的日志条目的记录填充我的elasticsearch
索引。典型的日志条目看起来有点像:
2001-01-01 01:01:01.001 [INFO] Message abc defg hijkl mnopq rstu vwxyz
这被logstash
解析为一个文档,其中包含@时间戳
级别
和消息
要尝试以正确的顺序重新组装日志,可以通过@timestamp
对记录进行排序。但是,在同一毫秒内记录两个条目(如果不是更多的话)当然是可能的
因此,我从elasticsearch
返回的结果与输入不相似。这在我记录表格时尤为明显:
2001-01-01 01:01:01.001 [INFO] +----+----+----+
2001-01-01 01:01:01.001 [INFO] | A | B | C |
2001-01-01 01:01:01.001 [INFO] +----+----+----+
2001-01-01 01:01:01.001 [INFO] | 11 | 12 | 13 |
2001-01-01 01:01:01.001 [INFO] +----+----+----+
以任意顺序返回,结果如下:
2001-01-01 01:01:01.001 [INFO] | 11 | 12 | 13 |
2001-01-01 01:01:01.001 [INFO] +----+----+----+
2001-01-01 01:01:01.001 [INFO] +----+----+----+
2001-01-01 01:01:01.001 [INFO] +----+----+----+
2001-01-01 01:01:01.001 [INFO] | A | B | C |
这使得elasticsearch
查询的结果不可用
因此,我需要一种机制,可以:
logstash
在插入的记录上记录一些原始序列信息elasticsearch
按结果插入索引的顺序对结果进行排序我在这两种工具中都找不到任何功能,我可以看出这与他们的一些哲学思想背道而驰。建议?我的建议是创建您自己的筛选器,并让它在所有事件中注入一个序列号,然后您可以将其用作时间戳后面的第二排序字段
它应该非常简单,只需复制
noop.rb
并添加一点代码来定义序号变量,然后使用event[“seq”]=seq++
设置每个事件。只有在具有多个节点和多个日志存储代理(或工作程序)的分布式系统中不使用它时,这才有效。在分布式系统中,事物的“原始顺序”几乎没有定义。Elasticsearch也有碎片,碎片之间没有顺序的概念。所以,是的,除非你添加了一些东西来排序,否则对于elasticsearch就没有办法解决这个问题。过滤器的想法可能很有效。