elasticsearch 如何使用logstash筛选器解析xml文件,elasticsearch,logstash,logstash-forwarder,logstash-configuration,elastic-stack,elasticsearch,Logstash,Logstash Forwarder,Logstash Configuration,Elastic Stack" /> elasticsearch 如何使用logstash筛选器解析xml文件,elasticsearch,logstash,logstash-forwarder,logstash-configuration,elastic-stack,elasticsearch,Logstash,Logstash Forwarder,Logstash Configuration,Elastic Stack" />

elasticsearch 如何使用logstash筛选器解析xml文件

elasticsearch 如何使用logstash筛选器解析xml文件,elasticsearch,logstash,logstash-forwarder,logstash-configuration,elastic-stack,elasticsearch,Logstash,Logstash Forwarder,Logstash Configuration,Elastic Stack,我正在尝试使用elasticsearch和logstash为一些简单的XML文件编制索引。到目前为止,我已经建立了麋鹿堆,并将其存放在货代处。我正在尝试使用设置xml过滤器,但似乎无法正确设置 我的XML格式非常先进 <Recording> <DataFile description="desc" fileName="test.wav" Source="mic" startTime="2014-12-12_121212" stopTime="2014-12-12_1313

我正在尝试使用elasticsearch和logstash为一些简单的XML文件编制索引。到目前为止,我已经建立了麋鹿堆,并将其存放在货代处。我正在尝试使用设置xml过滤器,但似乎无法正确设置

我的XML格式非常先进

<Recording>

  <DataFile description="desc" fileName="test.wav" Source="mic" startTime="2014-12-12_121212" stopTime="2014-12-12_131313"/>

</Recording>


我只希望每个文件都是elasticsearch中的一个条目,DataFile标记中的每个参数都是我可以搜索的键值。既然文档让我一无所获,那么这样的过滤器会是什么样子呢?我还尝试在中使用答案,但没有任何运气。

在logstash转发器配置中添加以下内容,并相应地更改logstash服务器IP、证书路径和日志路径

{
"network": {
"servers": [ "x.x.x.x:5043" ],
"ssl ca": " / cert/server.crt",
"timeout": 15
},
"files": [
{
"paths": [
"D:/ELK/*.log"
],
"fields": { "type": "log" }
}
]
}
lumberjack {
  port => 5043
  type => "lumberjack"
  ssl_certificate => " /cert/server.crt"
  ssl_key => "D:/ELK/logstash/cert/server.key"
  codec => multiline {
             pattern => "(\/Recording>)"
             what => "previous"
            negate => true
            }
}
在logstash服务器配置中添加以下输入插件。相应地更改证书、密钥路径和名称

{
"network": {
"servers": [ "x.x.x.x:5043" ],
"ssl ca": " / cert/server.crt",
"timeout": 15
},
"files": [
{
"paths": [
"D:/ELK/*.log"
],
"fields": { "type": "log" }
}
]
}
lumberjack {
  port => 5043
  type => "lumberjack"
  ssl_certificate => " /cert/server.crt"
  ssl_key => "D:/ELK/logstash/cert/server.key"
  codec => multiline {
             pattern => "(\/Recording>)"
             what => "previous"
            negate => true
            }
}
现在在logstash过滤器部分下添加下面的grok过滤器

grok {
        match   =>  ["message", "(?<content>(< Recording(.)*?</Recording>))"]
        tag_on_failure => [ ]

        }
现在,当您将xml消息添加到日志文件中时。每个条目都将被处理并存储在弹性搜索服务器中


谢谢,

您能显示当前的Logstash配置文件吗?Logstash逐行读取文件,因此您的首要任务是使用多行筛选器将文件的物理行连接到单个逻辑行(消息)。但Logstash并不是要像那样读取整个文件,所以我实际上会考虑另一种选择。