Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
<img src="//i.stack.imgur.com/RUiNP.png" height="16" width="18" alt="" class="sponsor tag img">elasticsearch logstash | elasticsearch-保持原始插入顺序_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch logstash | elasticsearch-保持原始插入顺序,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch logstash | elasticsearch-保持原始插入顺序,elasticsearch,logstash,elasticsearch,Logstash" />

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就没有办法解决这个问题。过滤器的想法可能很有效。