跳到主要内容

Datatype 数据源类型

Datatype

数据源类型(Datatype)的编程接口。数据源类型是炎凰数据平台的重要概念,用于描述数据源的类型信息,包括数据源的类型名称、数据源的类型配置信息等。

数据源类型中还定义了如何去解析字段的规则,例如event break, delimiter等, 当然最终要的还是如何去解析_time字段,也就是时间戳信息。 在炎凰数据平台中,系统会根据数据源类型来对数据源进行分类,例如: 数据源类型为JSON的数据在进入到炎凰数据平台时,系统会根据名称为JSON的内置数据源类型去解析字段,并将解析结果建立索引,一边后续的使用以及查询。 而数据源类型的属性有以下这些:

  • firstline_format, 用于多行文本合并,表示事件第一行的格式
  • discard_raw_message, 是否设置 _message字段为空字符串,默认是False。
    • 例如,在导入数据库的数据的时候,因为所有字段都已经是索引字段了,没有必要再拼装_message字段,可以设置该属性为True。
  • timestamp_timezone, 默认值是东八区+08:00。只有在设置了timestamp_format之后,才会生效。如果timestamp_format为空值,则时区的设置不生效。
  • timestamp_field, 指定索引时字段的字段名,这个字段中存储了事件的时间戳。该属性只有timestamp_config 为 "field"的时候才生效。
  • timestamp_format, 时间戳的格式,
    • 例如%Y/%m/%d %H:%M:%S之类, 具体可以参考这里
  • delimiter, 分隔符,影响到字段的解析
  • timestamp_regex, 时间戳的正则解析表达式, 当timestamp_configregex时,需要配置该字段
  • ingestion_time_extraction, 该属性用于配置数据索引阶段字段的抽取模式。合法值只能是csv,json和none三者中的一个,默认值是none。
    • csv表示事件的格式是类似csv格式的,并且在构建索引的时候将每个字段都解析出来作为索引时字段存到到索引中。
    • json表示事件的格式是json格式的,并且在构建索引的时候将每个字段都解析出来作为索引时字段存储到索引中。
    • none是默认的值,只会对 _time, _datatype, _host, _source 字段做索引。
  • timestamp_config, 时间戳配置,包括:
    • auto, 自动识别时间戳 (默认)
    • current, 使用当前时间作为时间戳
    • regex, 使用正则表达式来识别时间戳, 需要配置timestamp_regex字段
    • field, 使用指定字段来识别时间戳, 需要配置timestamp_fieldtimestamp_formattimestamp_timezone属性
  • ingestion_time_field_names, 该属性用于配置数据索引阶段字段的名称,当ingestion_time_extraction是csv的时候,如果csv文件没有包含表头(header)信息,则可以把表头信息设置在这个字段当中。
  • search_time_extraction, 查询时的字段加工,建议通过页面“字段加工”或者查询页面中的“抽取更多字段”等功能来定义一个查询时的字段加工。这里使用其定义好的id

继承自:

示例 1:
const datatype = new Datatype();
datatype.init(catalogService, 'test_data_type');
datatype.fetch().then(() => {});
// 增加属性或者修改属性都是调用update方法
datatype.update({
     name: 'test_data_type',
     attributes: {
         "firstline_format": "",
         "ingestion_time_extraction": "json",
         "timestamp_config": "auto",
         "delimiter": ","
     }
})

成员函数:

Datatypes

数据源类型的集合类(Datatypes), 用于创建数据源类型或者获取数据源类型(Datatype)的列表。

继承自:

示例 1:
const datatypes = catalogService.datatypes();
datatypes.fetch().then(() => {});
datatypes.create({
     name: 'test_data_type',
     attributes: {}
}).then((newDataType) => {
    // do something with newDataType
})

成员函数: