Я создаю Winston -asticsearch logger в Кибане, где мне нужно сохранить все, что происходит в приложении (request, apis, ...). Я использовал это (https://github.com/vanthome/winston-elasticsearch) Я определилШаблон отображения json. Также файл transformer.js, в котором я определяю функцию Transformer для преобразования данных журнала, предоставляемых winston, в структуру сообщения, которая больше подходит для индексации в ES.
, тогда я использую winston -asticsearchдля создания нового экземпляра Es:
exports.mappingTemplate = require('../../../index-template-mapping.json');
const TransportersElastic = new Elasticsearch({
index: 'soapserver',
level: 'info',
indexPrefix: 'logs',
transformer: transformer,
ensureMappingTemplate: true,
mappingTemplate: mappingTemplate,
flushInterval: 2000,
waitForActiveShards: 1,
handleExceptions: false,...
Но я продолжаю получать ошибку индекса Elasticsearch типа: 'mapper_parsing_exception' по следующим причинам: не удалось разобрать поле [fields.result.status] типа [text] '
invalid_argument_exception 'причина:' не удалось проанализировать поле [fields.rows.tmcode] типа [long] 'Здесь transformer.js:
exports.mappingTemplate = require('../../../index-template-mapping.json');
exports.transformer = (logData) => {
const transformed = {};
transformed['@timestamp'] = new Date().toISOString();
transformed.source_host = os.hostname();
transformed.message = logData.message;
if (typeof transformed.message === 'object') {
transformed.message = JSON.stringify(transformed.message);
Мне нужна помощь, предложение, как решить эту ошибкуи успешно завершить сопоставление.
Здесь index-mapping-template.json
{
"mapping": {
"_doc": {
"properties": {
"@timestamp": {
"type": "date"
},
"fields": {
"ignore_malformed": true,
"dynamic": "true",
"properties": {}
},
"message": {
"type": "text"
},
"severity": {
"type": "keyword"
}
}
}
}
}