#ingredient #fill #elasticsearch #rettle #pour #generic #etl

elastictea

rettle中与Elasticsearch交互的配方crate

3个稳定版本

2.0.0 2020年1月11日
1.0.1 2019年8月6日
1.0.0 2019年8月5日

#1672 in 数据库接口

MIT/Apache

25KB
282

elastictea

LICENSE License Build Status Crates.io Version

rettle ETL的通用填充倒灌配方crate。

数据结构

  • FillEsArg: FillEsTea的配方参数
  • FillEsTea: 用于在rettle壶中使用的填充配方的包装器,简化了其创建过程。
  • PourEsArg: PourEsTea的配方参数
  • PourEsTea: 用于在rettle壶中使用的倒灌配方的包装器,简化了其创建过程。

示例

#[derive(Serialize, Deserialize, Debug)]
struct ElasticTea {
    name: Option<String>,
    avg: Option<f32>,
}

impl Tea for ElasticTea {
    fn as_any(&self) -> &dyn Any {
        self
    }
}

fn main() {
    let es_client = Arc::new(EsClient::new("https://127.0.0.1:9200"));
    let test_fill_esarg = FillEsArg::new(
        "test-index1",
        "_doc",
        200,
        json!({
            "match_all": {}
        }),
        Arc::clone(&es_client),
    );

    let test_pour_esarg = PourEsArg::new(
        "test-pour-index2",
        "_doc",
        Arc::clone(&es_client),
    );



    let brewery = Brewery::new(4, Instant::now());
    let mut new_pot = Pot::new();
    let fill_elastictea = FillEsTea::new::<ElasticTea>("elastic_tea_test", "test_index", test_fill_esarg);
    let pour_elastictea = PourEsTea::new::<ElasticTea>("pour_elastic", test_pour_esarg);

    new_pot = new_pot.add_source(fill_elastictea);

    // Steep operations of choice
    
    new_pot = new_pot.add_ingredient(pour_elastictea);

    new_pot.brew(&brewery);
}

依赖项

~41MB
~1M SLoC