# How to handle fine grained errors in new Java API 8.0.1 for Bulk?

**URL:** <https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [April 1, 2022, 7:22am UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285 "2022-04-01T07:22:12Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![ivanqwam](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ivanqwam/32/28102_2.png) [@ivanqwam](https://discuss.elastic.co/u/ivanqwam)\
**Post date:** [April 1, 2022, 7:22am UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285/1 "2022-04-01T07:22:12Z")

</div>

With much sweat I could build a Bulk Request, on the new Java API 8.1.0, like this

```auto
// build request
ArrayList<BulkOperation> bulkOperations = new ArrayList<BulkOperation>();
BulkOperation bulkOperation = BulkOperation.of(b -> b.index(i -> i.index(indexes).id(qesdocument.idValue()).document(jsonData)) );
bulkOperations.add(bulkOperation);

// run request
bulkResponse = client.bulk(b -> b.index(indexes).operations(bulkOperations));

// handle errors
if (bulkResponse.errors()) { .....

```

When issued on a bulk of hundreds of documents, not all of them made it to Elasticsearch.  
**There were errors , on some documents , somewhere ...**

How can I **handle fine grained errors** to investigate what went wrong , just like what was provided in in the HLRC ?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [April 1, 2022, 12:35pm UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285/2 "2022-04-01T12:35:09Z")

</div>

You have to iterate over the response hits.  
You can do that with a stream and a filter to only collect the hits which have an error.

---

<div class="post-metadata">

**Author:** ![ivanqwam](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ivanqwam/32/28102_2.png) [@ivanqwam](https://discuss.elastic.co/u/ivanqwam)\
**Post date:** [April 1, 2022, 1:27pm UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285/3 "2022-04-01T13:27:56Z")

</div>

Ok, did this, (old style programming)

```auto

          if (bulkResponse.errors()) {

              System.out.println("Erreur occured");

              for (BulkResponseItem bulkResponseItem : bulkResponse.items()) {
                  if (bulkResponseItem.error() != null) {
                      System.out.println("Erreur id", bulkResponseItem.id());
                      System.out.println("Erreur seqNo", bulkResponseItem.seqNo());
                      System.out.println("Erreur result", bulkResponseItem.result());
                      System.out.println("Erreur type", bulkResponseItem.error().type());
                      System.out.println("Erreur reason", bulkResponseItem.error().reason());
                      System.out.println("Erreur caused by", bulkResponseItem.error().causedBy().reason());
                      System.out.println("Erreur String", bulkResponseItem.error().toString());
                      System.out.println("Erreur stackTrace", bulkResponseItem.error().stackTrace());
                  }
              }

          }

```

---

<div class="post-metadata">

**Author:** ![swallez](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/swallez/32/11972_2.png) [@swallez](https://discuss.elastic.co/u/swallez)\
**Post date:** [April 1, 2022, 4:10pm UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285/4 "2022-04-01T16:10:21Z")

</div>

> [@ivanqwam](#):
>
> just like what was provided in in the HLRC

@ivanqwam can you elaborate on that? What exactly are you referring to? This can be valuable information to improve the new client.

Thanks.

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [April 29, 2022, 4:10pm UTC](https://discuss.elastic.co/t/how-to-handle-fine-grained-errors-in-new-java-api-8-0-1-for-bulk/301285/5 "2022-04-29T16:10:48Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
