如何使用弹性(ELK)堆栈logging嵌套对象

我正尝试通过NodeJS将具有嵌套属性的JSON值logging到logzio ELK堆栈

代码是:

var logger = require('logzio-nodejs').createLogger({ token: config.LOGZIO_API_KEY }); // sending text logger.log('This is a log message'); // sending an object var obj = { message: 'Some log message', param1: 'val1', param2: 'val2' }; logger.log(obj); 

这工作正常,但如果我想logging嵌套的数据,如:

 // sending an object var obj = { message: 'Some log message', param1: { a : 'b', c : 'd' }, param2: 'val2' }; 

这会返回一个错误:

 {"type":"mapper_parsing_exception","reason":"failed to parse [param1]","caused_by":{"type":"illegal_argument_exception","reason":"unknown property [a]"}} 

我可以调整什么可以让我logging这个嵌套的对象?

这是因为当你将param1作为一个stringlogging时,ES创build了一个stringtypes的字段。

此后,您尝试将param1作为对象logging,并且与stringtypes冲突。

然而,你可以肯定地logging一个嵌套的对象,但是你必须给它一个已经存在的字段,比如说param3

 // sending an object var obj = { message: 'Some log message', param3: { a : 'b', c : 'd' }, param2: 'val2' };