# Check searchresponse is success or failure for a given search

**URL:** <https://discuss.elastic.co/t/check-searchresponse-is-success-or-failure-for-a-given-search/21582>\
**Category:** Elasticsearch\
**Created:** [January 12, 2015, 11:13am UTC](https://discuss.elastic.co/t/check-searchresponse-is-success-or-failure-for-a-given-search/21582 "2015-01-12T11:13:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![vipins](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/vipins/32/979_2.png) [@vipins](https://discuss.elastic.co/u/vipins)\
**Post date:** [January 12, 2015, 11:13am UTC](https://discuss.elastic.co/t/check-searchresponse-is-success-or-failure-for-a-given-search/21582/1 "2015-01-12T11:13:04Z")

</div>

I am querying elasticsearch with the below query

SearchResponse searchResponse = getElasticSearchClient()  
.prepareSearch(indexNameStr).setTypes(typeNameStr)  
.setSearchType(SearchType.DFS\_QUERY\_THEN\_FETCH)  
.setQuery(queryStrr).setSize(size)  
.setFrom(start).addSort(fieldSortBuilder)  
.execute().actionGet();

I wanted to check if the search is success or failure. Catch exception If there are any during search.

Is it correct to use below method to identify failures in search;

```
public void parseSearchResultFailures(SearchResponse res) {
    if (res.getFailedShards() > 0) {
        final ShardSearchFailure[] shardFailures = res.getShardFailures();
        StringBuilder reasonBuilder = new StringBuilder();
        for (ShardSearchFailure failure : shardFailures) {
            final String reason = failure.reason();
            LOGGER.info("Status: " + failure.status()
                    + " - Search failed on shard: " + reason);
            reasonBuilder.append(reason);
        }
        throw new ElasticsearchException("Search failed: "
                + reasonBuilder.toString());
    }
}

```

Thanks,

---

<div class="post-metadata">

**Author:** ![oreno](https://avatars.discourse-cdn.com/v4/letter/o/b4bc9f/32.png) [@oreno](https://discuss.elastic.co/u/oreno)\
**Post date:** [January 12, 2015, 4:27pm UTC](https://discuss.elastic.co/t/check-searchresponse-is-success-or-failure-for-a-given-search/21582/2 "2015-01-12T16:27:11Z")

</div>

Hi Vipins,  
I would start with checking the HTTP request status.  
Whenever there's an error, the actionGet will throw an exception.  
So I would do something like:

SearchResponse result = null;  
try{  
result = esRequest.execute().actionGet();  
if(result.status().equals(RestStatus.OK)){  
//handle success  
}  
else{  
log.error("something unexpected accured");  
parseSearchResultFailures(result);  
}

}catch(ElasticsearchException e){  
//handle Exception  
log.error(e.getMessage());  
}

---

<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:** [July 6, 2017, 12:39am UTC](https://discuss.elastic.co/t/check-searchresponse-is-success-or-failure-for-a-given-search/21582/3 "2017-07-06T00:39:31Z")

</div>


