Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.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动态索引KV文件的内容_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Logstash - Fatal编程技术网 elasticsearch 在一个文档中使用Logstash动态索引KV文件的内容,elasticsearch,logstash,elasticsearch,Logstash" /> elasticsearch 在一个文档中使用Logstash动态索引KV文件的内容,elasticsearch,logstash,elasticsearch,Logstash" />

elasticsearch 在一个文档中使用Logstash动态索引KV文件的内容

elasticsearch 在一个文档中使用Logstash动态索引KV文件的内容,elasticsearch,logstash,elasticsearch,Logstash,我有许多具有以下结构的属性文件key=Value,示例数据为: rejets.cache.temporaire.time=60 data.cache.referentiel.time=10 data.cache.temporaire.time=60 data.cache.getinfos.time=200 输入文件配置: file { path => [ "C:/logstash-7.3.1/data/input/data_conf_recette/keyvalue/*"

我有许多具有以下结构的属性文件key=Value,示例数据为:

rejets.cache.temporaire.time=60
data.cache.referentiel.time=10
data.cache.temporaire.time=60
data.cache.getinfos.time=200
输入文件配置:

file {
        path => [ "C:/logstash-7.3.1/data/input/data_conf_recette/keyvalue/*" ]

        start_position => beginning
        type => "config_file_kv_recette"
        codec => multiline {
        pattern => "\n"
        what => "previous"
        negate => true
        }
}
我想将此文件索引为文档elasticsearch DynamicCali(字段名称),如下所示:

 {
   rejets.cache.temporaire.time:60
   data.cache.referentiel.time:10
   data.cache.temporaire.time:60
    data.cache.getinfos.time:200
  }
我使用了以下配置,但在我的索引中发现每个字段在一个文档中被索引,因此在我的例子中,我有4个文档被索引:

mutate {
             gsub => [ "message", "[\\\\]r", "esp" ]
             gsub => [ "message", "[\\\\]n", "ace" ]
        }

        ruby {
             code => "begin; event['message'] = event['message'].split(/espace/); rescue Exception; end"
        }

        kv {
            source => "message"
            value_split => "="
            field_split => "\n"
        }

        grok {
                        match => { "message" => "(?<param>[^=]*)=%{GREEDYDATA:value}" }
                }

        if "_grokparsefailure" in [tags] {
                        drop {}
                }

        mutate {
            remove_field => ["message"]
        }  
变异{
gsub=>[“消息”、“[\\]r”、“esp”]
gsub=>[“消息”、“[\\]n”、“ace”]
}
红宝石{
代码=>“开始;事件['message']=事件['message'].拆分(/espace/);救援异常;结束”
}
千伏{
source=>“消息”
值_分割=>“=”
字段\u split=>“\n”
}
格罗克{
match=>{“message”=>“(?[^=]*)=%{GREEDYDATA:value}”
}
如果[tags]中有“\u grokparsefailure”{
删除{}
}
变异{
删除_字段=>[“消息”]
}  

请问我怎么做这个?感谢您的帮助

您的输入块是什么?您的inpu文件每行有一个键值对吗?Logstash将每一行作为单个事件处理,您需要使用编解码器来聚合它们(例如,多行),但是您需要共享您的输入块和输入文件的示例数据。我添加了输入文件块在您的情况下,您的多行插件conf应该使用如下模式:
^rejets
,以便任何不以rejets开头的行都与前一行连接。谢谢我使用该编解码器=>多行{pattern=>“^loremipsum”否定=>true what=>previous auto\u flush\u interval=>1个多行标记=>“”