在字段中全部创建Elasticsearch索引时具有mapper_parsing_exception

时间:2019-01-29 14:26:33

标签: elasticsearch indexing dynamic mapping winston

我正在Kibana上创建一个Winston-elasticsearch记录器,我需要在其中保存应用程序中发生的所有事情(请求,api,...)。我使用this(https://github.com/vanthome/winston-elasticsearch)定义了一个json映射模板。还有一个converter.js文件,我在其中定义了一个Transformer函数,将winston提供的日志数据转换为更适合在ES中建立索引的消息结构。

然后我使用winston-elasticsearch创建新的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,...

但是我不断收到类型为'mapper_parsing_exception'的Elasticsearch索引错误,原因如下:无法解析类型为[text]的字段[fields.result.status]'

illegal_argument_exception'原因:“无法解析类型为[long]的字段[fields.rows.tmcode]” 这里是converter.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"

       }
     }
   }
  }
 }

0 个答案:

没有答案