Struct elasticsearch::BulkOperations
source · pub struct BulkOperations { /* private fields */ }
Expand description
A collection of bulk operations.
A collection of bulk operations can perform operations against multiple different indices, specifying a different source document for each. When modelling source documents with different structs, it becomes difficult to construct a collection of bulk operations with such a setup. BulkOperations alleviates this difficulty by serializing bulk operations ahead of time of the bulk API call, into an internal byte buffer, using the buffered bytes as the body of the bulk API call.
Example
Using BulkOperations to construct a collection of bulk operations that use different structs to model source documents
#[derive(Serialize)]
struct IndexDoc<'a> {
foo: &'a str,
}
#[derive(Serialize)]
struct CreateDoc<'a> {
bar: &'a str,
}
#[derive(Serialize)]
struct UpdateDoc<'a> {
baz: &'a str,
}
let mut ops = BulkOperations::new();
ops.push(BulkOperation::index(IndexDoc { foo: "index" })
.id("1")
.pipeline("pipeline")
.index("index_doc")
.routing("routing")
)?;
ops.push(BulkOperation::create("2", CreateDoc { bar: "create" }))?;
ops.push(BulkOperation::update("3", UpdateDoc { baz: "update" }))?;
ops.push(BulkOperation::<()>::delete("4"))?;
let bulk_response = client.bulk(BulkParts::Index("tweets"))
.body(vec![ops])
.send()
.await?;
Implementations
sourceimpl BulkOperations
impl BulkOperations
sourcepub fn new() -> Self
pub fn new() -> Self
Initializes a new instance of BulkOperations
sourcepub fn with_bytes(buf: BytesMut) -> Self
pub fn with_bytes(buf: BytesMut) -> Self
Initializes a new instance of BulkOperations, using the passed bytes::BytesMut as the buffer to write operations to