extern crate elastic;
extern crate env_logger;
extern crate futures;
extern crate tokio_core;
use std::error::Error;
use futures::Future;
use tokio_core::reactor::Core;
use elastic::prelude::*;
fn run() -> Result<(), Box<Error>> {
let mut core = Core::new()?;
let client = AsyncClientBuilder::new().build(&core.handle())?;
let res_future = client
.request(BulkRequest::new(bulk_body()))
.send()
.and_then(|res| res.into_response::<BulkResponse>());
let bulk_future = res_future.and_then(|bulk| {
for op in bulk {
match op {
Ok(op) => println!("ok: {:?}", op),
Err(op) => println!("err: {:?}", op),
}
}
Ok(())
});
core.run(bulk_future)?;
Ok(())
}
fn bulk_body() -> String {
let mut bulk = String::new();
for i in 1..1000 {
let header = format!(
"{{ \"index\" : {{ \"_index\" : \"test\", \"_type\" : \"ty\", \"_id\" : \"{}\" }} }}",
i
);
let body = format!("{{ \"title\" : \"string value {}\" }}", i);
bulk.push_str(&header);
bulk.push('\n');
bulk.push_str(&body);
bulk.push('\n');
}
bulk
}
fn main() {
env_logger::init().unwrap();
run().unwrap()
}