我流利地工作得非常好,能够将数据发布到弹性搜索。我修改了流利的配置文件来拖尾文件,获取数据并发布。以下是来源:
[2013-02-28 12:00:00 +0900] alice engineer 1
如果输入低于数据:
<source>
@type tail
format /(?:"Name":")(.*?)(?:")/ #CHANGE HERE
time_key logtime
time_format %Y-%m-%d %H:%M:%S %z
path /home/user/file
tag first
</source>
这是完全流利的阅读,也发表在elasticsearch上。
然后我修改了正则表达式模式以接受json数据:
{
"Name":"Logger",
"Type":"Logging"
}
所以如果输入是:
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_printnotprintdailyexpenses`(
in i_localBodyId varchar(10),
in i_epId int(20),
out printed INT(20),
out notprinted INT(20)
)
BEGIN
set printed=(select count(isPrinted) from tbl_dailyExpenses
where date((curdate() - 7)) and date(curdate())and
localBodyId =i_localBodyId and epId=i_epId and isPrinted=1 group by CURDATE()-7 );
set notprinted=(select count(isPrinted) from tbl_dailyExpenses
where date((curdate() - 7 )) and date(curdate())and
localBodyId =i_localBodyId and epId=i_epId and isPrinted=0 group by CURDATE()-7 );
END
然后没有关于elasticsearch的数据。即使是流利的日志也不会显示任何错误或警告信息。正则表达式模式是错误的吗?我该如何解决呢?
由于
答案 0 :(得分:2)
似乎你想从json中获取数据到elasticsearch中。您可以使用JSON解析器为您完成繁重的工作,请参阅Getting Data From Json Into Elasticsearch Using Fluentd并提供必要的详细信息以帮助您入门。
如果您想修复您的正则表达式方法,请使用
format /"Name"\s*:\s*"(?<name>[^"]*)"/
请注意(?<name>...)
是名为捕获组,在弹性搜索中用于创建具有相同名称的字段。模式匹配
"Name"
- 文字"Name"
子字符串\s*:\s*
- 用0+空格字符括起来的冒号"
- 双引号(?<name>[^"]*)
- Group&#34; name&#34;匹配"
"
- 双引号(虽然不是必需的)。如果您想在同一字段中同时拥有Type
,也可以使用
format /"(?:Name|Type)"\s*:\s*"(?<name>[^"]*)"/
其中(?:Name|Type)
是与Name
或Type
匹配的非捕获组子串(|
是一个交替运算符。)