Skip to content

A composable, functional ETL library.

License

Notifications You must be signed in to change notification settings

shengnian/emmett

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API Docs Crates.io Gitlab pipeline status (branch) Crates.io

About

emmett is a functional, composable ETL library written in Rust, which means:

  • Blazing fast ⚡⚡⚡
  • Very small resource requirements (currently needs less than 3 MB RAM for simple pipelines)
  • No garbage collector == better and more consistent performance
  • Completely asynchronous - plugins operate independently of one another
  • Multithreaded and work-stealing

Usage

emmett currently uses TOML for configuration, but will be able to parse Logstash configuration files as well as other formats like JSON in the future.

The Logstash configuration file parser is currently on hold until the plugins themselves become more stable. Merge requests are always welcome though!

# This is an emmett config file.

[[inputs]]

[inputs.http_poller]
request_timeout = 60
schedule = { cron = "* * * * * UTC" }
codec = "json"
metadata_target = "http_poller_metadata"
truststore = "/path/to/downloaded_truststore.jks"
truststore_password = "mypassword"

[[inputs.http_poller.urls]]
test1 = "https://jsonplaceholder.typicode.com/posts/1"

[[filters]]

[filters.mutate]
replace = { "id" = "yo dawg" }
copy = { "title" = "titleCopy" }
strip = ["body"]
split = { "body" = "\n", "titleCopy" = " repellat " }
capitalize = ["titleCopy"]
join = { "body" = " ... "}

[filters.json]
source = "jsonString"
target = "jsonString"
    
[filters.date]
match = [ "timestamp" , "dd/MMM/yyyy:HH:mm:ss Z" ]	

[[outputs]]

[outputs.elasticsearch]
hosts = ["localhost:9200"]

About

A composable, functional ETL library.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages