# Elasticsearch java api client

**URL:** <https://discuss.elastic.co/t/elasticsearch-java-api-client/294042>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [January 11, 2022, 2:11pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042 "2022-01-11T14:11:28Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Arun\_Nath](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/arun_nath/32/97607_2.png) [@Arun\_Nath](https://discuss.elastic.co/u/Arun_Nath)\
**Post date:** [January 11, 2022, 2:11pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/1 "2022-01-11T14:11:28Z")

</div>

```auto
{
  "aggs": {
    "my-agg-name": {
      "terms": {
        "field": "my-field"
      },
      "aggs": {
        "my-sub-agg-name": {
          "avg": {
            "field": "my-other-field"
          }
        }
      }
    }
  }
}

```

I wanted to perform the above Elasticsearch query in java using the new Elasticsearch java api client . I am using Elasticsearch version 7.16 . Can someone please help me in building the same query using the new Elasticsearch java api client .

---

<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:** [January 11, 2022, 4:05pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/2 "2022-01-11T16:05:12Z")

</div>

That should be:

```java
SearchRequest search = SearchRequest.of(b1 -> b1
    .aggregations("my-agg-name", b2 -> b2
        .terms(b3 -> b3
            .field("my-field")
        )
        .aggregations("my-sub-agg-name", b3 -> b3
            .avg(b4 -> b4
                .field("my-other-field")
            )
        )
    )
);

```

---

<div class="post-metadata">

**Author:** ![Arun\_Nath](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/arun_nath/32/97607_2.png) [@Arun\_Nath](https://discuss.elastic.co/u/Arun_Nath)\
**Post date:** [January 11, 2022, 4:59pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/3 "2022-01-11T16:59:38Z")

</div>

Hi @swallez ,  
This looks perfect . Just one more doubt the _of_ function is available for 7.16 and not for 7.15 version . If possible can you please share a solution which can be used for 7.15 as well .  
Thanks in Advance .

---

<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:** [January 11, 2022, 5:24pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/4 "2022-01-11T17:24:20Z")

</div>

The `SomeClass.of` method is a shortcut for `new SomeClass.Builder()` at the begining and `.build()` at the end:

```auto
SearchRequest search = new SearchRequest.Builder()
    .aggregations("my-agg-name", b2 -> b2
        .terms(b3 -> b3
            .field("my-field")
        )
        .aggregations("my-sub-agg-name", b3 -> b3
            .avg(b4 -> b4
                .field("my-other-field")
            )
        )
    )
    .build();

```

---

<div class="post-metadata">

**Author:** ![Arun\_Nath](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/arun_nath/32/97607_2.png) [@Arun\_Nath](https://discuss.elastic.co/u/Arun_Nath)\
**Post date:** [January 11, 2022, 6:01pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/5 "2022-01-11T18:01:39Z")

</div>

Thank you so much for clarification @swallez .

---

<div class="post-metadata">

**Author:** ![Arun\_Nath](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/arun_nath/32/97607_2.png) [@Arun\_Nath](https://discuss.elastic.co/u/Arun_Nath)\
**Post date:** [January 11, 2022, 6:08pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/6 "2022-01-11T18:08:06Z")

</div>

Hi @swallez ,  
With the above solution i could see query getting created correctly but i am getting below error in runtime .

```auto
co.elastic.clients.base.ApiException: null
	at co.elastic.clients.base.rest_client.RestClientTransport.getHighLevelResponse(RestClientTransport.java:224)
	at co.elastic.clients.base.rest_client.RestClientTransport.performRequest(RestClientTransport.java:104)
	at co.elastic.clients.elasticsearch.ElasticsearchClient.search(ElasticsearchClient.java:1283)
	

```

---

<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:** [January 11, 2022, 6:55pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/7 "2022-01-11T18:55:07Z")

</div>

What version are you using? The stacktrace seems to indicate version 7.15.

Version 7.15 was a beta version which is not supported. Please upgrade to version 7.16.2

---

<div class="post-metadata">

**Author:** ![Arun\_Nath](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/arun_nath/32/97607_2.png) [@Arun\_Nath](https://discuss.elastic.co/u/Arun_Nath)\
**Post date:** [January 12, 2022, 5:09pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/8 "2022-01-12T17:09:47Z")

</div>

Yes the issue got resolved while using 7.16.2 . Mapping aggregations from search response also seems to changed. Can you please help me with mapping aggregation values from search response as well ?

---

<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:** [January 12, 2022, 5:28pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/9 "2022-01-12T17:28:43Z")

</div>

The API to create an aggregation may not be straightfoward, but for results just follow the API and the completion provided by your IDE.

---

<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:** [January 12, 2022, 5:30pm UTC](https://discuss.elastic.co/t/elasticsearch-java-api-client/294042/10 "2022-01-12T17:30:26Z")

</div>


