Class BulkProcessor

  • All Implemented Interfaces:
    java.io.Closeable, java.lang.AutoCloseable

    public class BulkProcessor
    extends java.lang.Object
    implements java.io.Closeable
    A bulk processor is a thread safe bulk processing class, allowing to easily set when to "flush" a new bulk request (either based on number of actions, based on the size, or time), and to easily control the number of concurrent bulk requests allowed to be executed in parallel.

    In order to create a new bulk processor, use the BulkProcessor.Builder.

    • Method Detail

      • close

        public void close()
        Closes the processor. If flushing by time is enabled, then it's shutdown. Any remaining bulk actions are flushed.
        Specified by:
        close in interface java.lang.AutoCloseable
        Specified by:
        close in interface java.io.Closeable
      • awaitClose

        public boolean awaitClose​(long timeout,
                                  java.util.concurrent.TimeUnit unit)
                           throws java.lang.InterruptedException
        Closes the processor. If flushing by time is enabled, then it's shutdown. Any remaining bulk actions are flushed.

        If concurrent requests are not enabled, returns true immediately. If concurrent requests are enabled, waits for up to the specified timeout for all bulk requests to complete then returns true If the specified waiting time elapses before all bulk requests complete, false is returned.

        Parameters:
        timeout - The maximum time to wait for the bulk requests to complete
        unit - The time unit of the timeout argument
        Returns:
        true if all bulk requests completed and false if the waiting time elapsed before all the bulk requests completed
        Throws:
        java.lang.InterruptedException - If the current thread is interrupted
      • add

        public BulkProcessor add​(IndexRequest request)
        Adds an IndexRequest to the list of actions to execute. Follows the same behavior of IndexRequest (for example, if no id is provided, one will be generated, or usage of the create flag).
      • ensureOpen

        protected void ensureOpen()
      • add

        public BulkProcessor add​(BytesReference data,
                                 @Nullable
                                 java.lang.String defaultIndex,
                                 @Nullable
                                 java.lang.String defaultType,
                                 XContentType xContentType)
                          throws java.lang.Exception
        Adds the data from the bytes to be processed by the bulk processor
        Throws:
        java.lang.Exception
      • add

        public BulkProcessor add​(BytesReference data,
                                 @Nullable
                                 java.lang.String defaultIndex,
                                 @Nullable
                                 java.lang.String defaultType,
                                 @Nullable
                                 java.lang.String defaultPipeline,
                                 XContentType xContentType)
                          throws java.lang.Exception
        Adds the data from the bytes to be processed by the bulk processor
        Throws:
        java.lang.Exception
      • flush

        public void flush()
        Flush pending delete or index requests.