#elasticsearch #schema #mapping #timestamp #type #documentation #ecs

ecs_types

Rust类型映射到Elasticsearch通用模式

2个不稳定版本

0.2.0 2022年11月30日
0.1.0 2022年11月29日

#39 in #elasticsearch

Apache-2.0

1.5MB
14K SLoC

AsciiDoc 9K SLoC // 0.1% comments Python 4.5K SLoC // 0.2% comments Rust 462 SLoC // 0.0% comments Jinja2 215 SLoC // 0.1% comments

ecs_types

Rust类型映射到Elasticsearch通用模式

此crate提供基本类型,用于将数据导入Elasticsearch。它由https://github.com/elastic/ecs中的类型定义生成。

crates文档可在https://docs.rs/crate/ecs_types找到。# ecs_types

使用示例

use ecs_types::types::Timestamp;
use ecs_types::*;
use serde_json::json;

let now: Timestamp = chrono::offset::Local::now().into();
let mut base = Base::new(now.clone());
let mut file = File::default();
file.set_name("readme.txt".into());
file.set_mtime(now);

base.with_file(file);
println!("{}", serde_json::to_string_pretty(&json!(base)).unwrap() );

创建以下结果

{
  "@timestamp": 1669822098181,
  "file": {
    "attributes": [],
    "mtime": 1669822098181,
    "name": "readme.txt"
  },
  "tags": []
}

许可证: Apache-2.0


lib.rs:

使用示例

use ecs_types::types::Timestamp;
use ecs_types::*;
use serde_json::json;

let now: Timestamp = chrono::offset::Local::now().into();
let mut base = Base::new(now.clone());
let mut file = File::default();
file.set_name("readme.txt".into());
file.set_mtime(now);

base.with_file(file);
println!("{}", serde_json::to_string_pretty(&json!(base)).unwrap() );

创建以下结果

{
  "@timestamp": 1669822098181,
  "file": {
    "attributes": [],
    "mtime": 1669822098181,
    "name": "readme.txt"
  },
  "tags": []
}

依赖项

~2.2–4MB
~68K SLoC