@@ -394,6 +394,7 @@ class ElasticFacadeImpl implements ElasticFacade {
394394
395395 RestClient.RestResponse response = bulkResponse(index, actionSourceList, refresh)
396396 checkResponse(response, " Bulk operations" , index)
397+ checkBulkResponseErrors(response, " Bulk index" , index)
397398 }
398399
399400 @Override
@@ -742,6 +743,33 @@ class ElasticFacadeImpl implements ElasticFacade {
742743 throw new BaseException (msg)
743744 }
744745
746+ static void checkBulkResponseErrors (RestClient.RestResponse response , String operation , String index ) {
747+ if (response == null ) return
748+ try {
749+ Map responseMap = (Map ) jsonToObject(response. text())
750+ if (responseMap. errors == true ) {
751+ List<Map > items = (List<Map > ) responseMap. items
752+ List<String > errorMessages = []
753+ for (Map item in items) {
754+ Map itemMap = (Map ) item. values(). first()
755+ if (itemMap. error) {
756+ String errorMsg = " Doc ${ itemMap._id ?: 'unknown'} : ${ itemMap.error} "
757+ errorMessages. add(errorMsg)
758+ if (errorMessages. size() >= 10 ) break
759+ }
760+ }
761+ String msg = " ${ operation}${ index ? ' on index ' + index : ''} had ${ items?.size() ?: 0} items with errors"
762+ if (errorMessages) msg + = " :\n " + errorMessages. join(" \n " )
763+ logger. error(" ElasticSearch ${ msg} " )
764+ throw new BaseException (msg)
765+ }
766+ } catch (BaseException be) {
767+ throw be
768+ } catch (Throwable t) {
769+ logger. error(" Error checking bulk response for errors: ${ t.toString()} " )
770+ }
771+ }
772+
745773 static String objectToJson (Object jsonObject ) {
746774 if (jsonObject instanceof String ) return (String ) jsonObject
747775 return jacksonMapper. writeValueAsString(jsonObject)
0 commit comments