# Elasticsearch with Java -: Use scroll API for queries written in JSON format

**URL:** <https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363>\
**Category:** Elasticsearch\
**Created:** [April 4, 2019, 9:29am UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363 "2019-04-04T09:29:15Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aditya\_Srivastava](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aditya_srivastava/32/43287_2.png) [@Aditya\_Srivastava](https://discuss.elastic.co/u/Aditya_Srivastava)\
**Post date:** [April 4, 2019, 9:29am UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/1 "2019-04-04T09:29:15Z")

</div>

I have a query taken from kibana in JSON format. I have a java code where I am able to fire this same query using RestClient which is working fine.  
Now the data being fetched is huge and so I want to use the scroll API to fetch the data in chunks.  
The examples that I could find for scroll API is using RestHighLevelClient. But the problem is my query is in JSON format due to which it is giving exception as "no [query] registered for "[aggs]]"

There could be two solutions to my problem

1. Connect to ES with RestClient, use scroll API and pass my query in JSON to it and get the output.
2. Connect to ES with RestHighLevelClient, use scroll API and pass my query in JSON format and get the output

At present both the above approach are not working. Any help or lead will be very helpful

---

<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 4, 2019, 12:55pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/2 "2019-04-04T12:55:44Z")

</div>

You can't use aggs in a scroll query. What is your query/code look like exactly?

---

<div class="post-metadata">

**Author:** ![Aditya\_Srivastava](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aditya_srivastava/32/43287_2.png) [@Aditya\_Srivastava](https://discuss.elastic.co/u/Aditya_Srivastava)\
**Post date:** [April 4, 2019, 1:47pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/3 "2019-04-04T13:47:20Z")

</div>

```
String query = "";
     
    query ="\"\n" +
            "\n" +
            "{\n" +
            " \"aggs\": {\n" +
            " \"term1\": {\n" +
            " \"terms\": {\n" +
            " \"field\": \"term1.keyword\",\n" +
            " \"size\": 500000,\n" +
            " \"order\": {\n" +
            " \"1\": \"desc\"\n" +
            " }\n" +
            " },\n" +
            " \"aggs\": {\n" +
            " \"1\": {\n" +
            " \"cardinality\": {\n" +
            " \"field\": \"term2\"\n" +
            " }\n" +
            " },\n" +
            " \"term3\": {\n" +
            " \"terms\": {\n" +
            " \"field\": \"term4\",\n" +
            " \"size\": 120,\n" +
            " \"order\": {\n" +
            " \"1\": \"asc\"\n" +
            " }\n" +
            " },\n" +
            " \"aggs\": {\n" +
            " \"1\": {\n" +
            " \"cardinality\": {\n" +
            " \"field\": \"term2\"\n" +
            " }\n" +
            " },\n" +
            " \"term5\": {\n" +
            " \"terms\": {\n" +
            " \"field\": \"term6\",\n" +
            " \"size\": 1,\n" +
            " \"order\": {\n" +
            " \"term5-orderAgg\": \"desc\"\n" +
            " }\n" +
            " },\n" +
            " \"aggs\": {\n" +
            " \"1\": {\n" +
            " \"cardinality\": {\n" +
            " \"field\": \"term2\"\n" +
            " }\n" +
            " },\n" +
            " \"term5-orderAgg\": {\n" +
            " \"max\": {\n" +
            " \"field\": \"term7\"\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " },\n" +
            " \"size\": 0,\n" +
            " \"_source\": {\n" +
            " \"excludes\": []\n" +
            " },\n" +
            " \"stored_fields\": [\n" +
            " \"*\"\n" +
            " ],\n" +
            " \"script_fields\": {},\n" +
            " \"docvalue_fields\": [\n" +
            " {\n" +
            " \"field\": \"@timestamp\",\n" +
            " \"format\": \"date_time\"\n" +
            " },\n" +
            " {\n" +
            " \"field\": \"Timer_val\",\n" +
            " \"format\": \"date_time\"\n" +
            " },\n" +
            " {\n" +
            " \"field\": \"Total_time\",\n" +
            " \"format\": \"date_time\"\n" +
            " }\n" +
            " ],\n" +
            " \"query\": {\n" +
            " \"bool\": {\n" +
            " \"must\": [\n" +
            " {\n" +
            " \"match_all\": {}\n" +
            " },\n" +
            " {\n" +
            " \"range\": {\n" +
            " \"@timestamp\": {\n" +
            " \"gte\": 1522235348426,\n" +
            " \"lte\": 1553771348426,\n" +
            " \"format\": \"epoch_millis\"\n" +
            " }\n" +
            " }\n" +
            " },\n" +
            " {\n" +
            " \"match_phrase\": {\n" +
            " \"term8.keyword\": {\n" +
            " \"query\": \"term9\"\n" +
            " }\n" +
            " }\n" +
            " }\n" +
            " ],\n" +
            " \"filter\": [],\n" +
            " \"should\": [],\n" +
            " \"must_not\": []\n" +
            " }\n" +
            " }\n" +
            "}\n" +
            "\"";
```

---

<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 4, 2019, 5:52pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/4 "2019-04-04T17:52:26Z")

</div>

So just keep the query part and remove anything else.

---

<div class="post-metadata">

**Author:** ![Aditya\_Srivastava](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aditya_srivastava/32/43287_2.png) [@Aditya\_Srivastava](https://discuss.elastic.co/u/Aditya_Srivastava)\
**Post date:** [April 7, 2019, 12:35pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/5 "2019-04-07T12:35:37Z")

</div>

above query in structured format

{  
aggs: {  
term1: {  
terms: {  
field: "term1.keyword",  
size: 500000,  
order: {  
1: desc  
}  
},  
aggs: {  
1: {  
cardinality: {  
field: "term2"  
}  
},  
term3: {  
terms: {  
field: "term4",  
size: 120,  
order: {  
1: asc  
}  
},  
aggs: {  
1: {  
cardinality: {  
field: "term2"  
}  
},  
term5: {  
terms: {  
field: "term6",  
size: 1,  
order: {  
term5-orderAgg: desc  
}  
},  
aggs: {  
1: {  
cardinality: {  
field: "term2"  
}  
},  
term5-orderAgg: {  
max: {  
field: "term7"  
}  
}  
}  
}  
}  
}  
}  
}  
},  
size: 0,  
\_source: {  
excludes:   
},  
stored\_fields: [  
\*  
],  
script\_fields: {},  
docvalue\_fields: [  
{  
field: @timestamp,  
format: date\_time  
},  
{  
field: "Timer\_val",  
format: date\_time  
},  
{  
field: "Total\_time",  
format: date\_time  
}  
],  
query: {  
bool: {  
must: [  
{  
match\_all: {}  
},  
{  
range: {  
@timestamp: {  
gte: 1522235348426,  
lte: 1553771348426,  
format: epoch\_millis  
}  
}  
},  
{  
match\_phrase: {  
term8.keyword: {  
query: "term9"  
}  
}  
}  
],  
filter: ,  
should: ,  
must\_not:   
}  
}  
}

---

<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 7, 2019, 1:15pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/6 "2019-04-07T13:15:17Z")

</div>

just keep the query part and remove anything else.

---

<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:** [May 5, 2019, 1:15pm UTC](https://discuss.elastic.co/t/elasticsearch-with-java-use-scroll-api-for-queries-written-in-json-format/175363/7 "2019-05-05T13:15:18Z")

</div>

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