Briefly, this error occurs when Elasticsearch encounters issues while executing a DeleteByQuery operation for ‘stats’. This could be due to version conflicts, locked indices, or insufficient permissions. To resolve this, you can: 1) Check and resolve any version conflicts, 2) Ensure the indices are not locked or in read-only mode, 3) Verify that the user has the necessary permissions to perform the operation, and 4) Check the health of your Elasticsearch cluster and ensure it’s not under heavy load, which could cause operations to fail.
This guide will help you check for common problems that cause the log ” [{}] {} failures and {} conflicts encountered while running DeleteByQuery for stats ” to appear. To understand the issues related to this log, read the explanation below about the following Elasticsearch concepts: delete, plugin, query.
Overview
DELETE is an Elasticsearch API which removes a document from a specific index. This API requires an index name and _id document to delete the document.
Delete a document
DELETE /my_index/_doc/1
Notes
- A delete request throws 404 error code if the document does not already exist in the index.
- If you want to delete a set of documents that matches a query, you need to use delete by query API.
Log Context
Log “[{}] {} failures and {} conflicts encountered while running DeleteByQuery for stats” classname is DataFrameAnalyticsDeleter.java.
We extracted the following from Elasticsearch source code for those seeking an in-depth context :
bulkByScrollResponse -> { if (bulkByScrollResponse.isTimedOut()) { logger.warn("[{}] DeleteByQuery for stats timed out"; id); } if (bulkByScrollResponse.getBulkFailures().isEmpty() == false) { logger.warn("[{}] {} failures and {} conflicts encountered while running DeleteByQuery for stats"; id; bulkByScrollResponse.getBulkFailures().size(); bulkByScrollResponse.getVersionConflicts()); for (BulkItemResponse.Failure failure : bulkByScrollResponse.getBulkFailures()) { logger.warn("[{}] DBQ failure: {}"; id; failure); } }