Struct 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§

Source§

impl BulkOperations

Source

pub fn new() -> Self

Initializes a new instance of BulkOperations

Source

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

Source

pub fn push<O, B>(&mut self, op: O) -> Result<(), Error>
where O: Into<BulkOperation<B>>, B: Serialize,

Pushes a bulk operation into the collection of bulk operations.

The operation is serialized and written to the underlying byte buffer.

Trait Implementations§

Source§

impl Body for BulkOperations

Source§

fn bytes(&self) -> Option<Bytes>

An existing immutable buffer that can be used to avoid having to write to another buffer that will then be written to the request stream. Read more
Source§

fn write(&self, bytes: &mut BytesMut) -> Result<(), Error>

Write to a buffer that will be written to the request stream
Source§

impl Default for BulkOperations

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,