Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/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
Json 根据文档ID在多个日志存储上组合输出_Json_Logstash_Elastic Stack - Fatal编程技术网

Json 根据文档ID在多个日志存储上组合输出

Json 根据文档ID在多个日志存储上组合输出,json,logstash,elastic-stack,Json,Logstash,Elastic Stack,我有一个来自RabbitMq的json日志。在我的例子中,我使用三种不同的logstash服务使用三种不同的ques,它将使用相同的索引输出到elasticsearch。假设我们有日志A、日志B和日志C。这些日志的结构如下: 要使用这些日志并将其发送到的配置文件如下所示: 问题=>在发送到具有相同索引的elastic之前,如何根据文档id组合这三种不同的日志? JSON输出可能如下所示: 您可以使用文档id在弹性搜索端合并日志,也可以使用弹性搜索更新查询执行更新功能,以便它与现有记录合并

我有一个来自RabbitMq的json日志。在我的例子中,我使用三种不同的logstash服务使用三种不同的ques,它将使用相同的索引输出到elasticsearch。假设我们有日志A、日志B和日志C。这些日志的结构如下:

要使用这些日志并将其发送到的配置文件如下所示:

问题=>在发送到具有相同索引的elastic之前,如何根据文档id组合这三种不同的日志?

JSON输出可能如下所示:


您可以使用文档id在弹性搜索端合并日志,也可以使用弹性搜索更新查询执行更新功能,以便它与现有记录合并

下面的代码将检查弹性搜索中是否有文档id为的文档,如果没有文档,它将创建一个新文档。 如果有文档id为的文档,它将执行更新查询

为了澄清,请调查

请尝试以下代码:



elasticsearch {

                hosts => [ "xxxxxx"]
                index => "combined"

                action => "update"

                doc_as_upsert => true

                document_id => "%{[header][serialNum]}"

}

我看到一个建议使用更新选项的答案

使用elasticsearch“action=>update”会疯狂地降低性能。随着流量的增加,您将看到ES群集工作非常努力

“更新”将首先导致ES搜索文档、合并文档、删除现有文档并添加新的合并文档

这需要大量的处理

我的答覆是:

使用聚合过滤器。有一个任务id字段用于对其进行排序。您可以将此设置为

aggregate {
 task_id => %{[header][serialNum]}
 ...
}

你好,蒂维亚!谢谢你回复我…你的回答真的对我有帮助。所有日志合并在一个索引上,很好!不幸的是,它用相同的字段和属性替换所有日志。我想知道如何将它与相同的索引和ID组合到一个项目或数组中。再次感谢你