Before you begin reading this guide, we recommend you run Elasticsearch Error Check-Up which can resolve issues that cause many errors.
This guide will help you check for common problems that cause the log ” Bulk request has been cancelled. ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: bulk, handler and request.
Advanced users might want to skip right to the common problems section in each concept or try running the Check-Up to analyze Elasticsearch configuration and help resolve this error.
Overview
In Elasticsearch, when using the Bulk API it is possible to perform many write operations in a single API call, which increases the indexing speed. Using the Bulk API is more efficient than sending multiple separate requests. This can be done for the following four actions:
Examples
The bulk request below will index a document, delete another document, and update an existing document.
POST _bulk { "index" : { "_index" : "myindex", "_id" : "1" } } { "field1" : "value" } { "delete" : { "_index" : “myindex", "_id" : "2" } } { "update" : {"_id" : "1", "_index" : "myindex"} } { "doc" : {"field2" : "value5"} }
Notes
- Bulk API is useful when you need to index data streams that can be queued up and indexed in batches of hundreds or thousands, such as logs.
- There is no correct number of actions or limits to perform on a single bulk call, but you will need to figure out the optimum number by experimentation, given the cluster size, number of nodes, hardware specs etc.
Log Context
Log “Bulk request {} has been cancelled.” classname is BulkRequestHandler.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :
if (concurrentRequests == 0) { latch.await(); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); logger.info(() -> new ParameterizedMessage("Bulk request {} has been cancelled."; executionId); e); listener.afterBulk(executionId; bulkRequest; e); } catch (Exception e) { logger.warn(() -> new ParameterizedMessage("Failed to execute bulk request {}."; executionId); e); listener.afterBulk(executionId; bulkRequest; e); } finally {
Run the Check-Up to get customized insights on your system: