# Elasticsearch - Migrating from Java High Level Rest Client to New Java API Client of Version 8.x

**URL:** <https://discuss.elastic.co/t/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-client-of-version-8-x/358709>\
**Category:** Elasticsearch\
**Tags:** language-clients\
**Created:** [May 3, 2024, 12:17pm UTC](https://discuss.elastic.co/t/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-client-of-version-8-x/358709 "2024-05-03T12:17:43Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Aswini\_Kumar\_Rout](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aswini_kumar_rout/32/42165_2.png) [@Aswini\_Kumar\_Rout](https://discuss.elastic.co/u/Aswini_Kumar_Rout)\
**Post date:** [May 3, 2024, 12:17pm UTC](https://discuss.elastic.co/t/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-client-of-version-8-x/358709/1 "2024-05-03T12:17:43Z")

</div>

I am using the new version 8.13 of Elasticsearch for a new search app and trying to imitate the below kind of logic using the new Java API client instead of using Java High Level Rest client which was deprecated now. I have to perform search from multiple indices including below queries-

1. **multiple matchPhrasePrefixQuery like below**

```auto
BoolQueryBuilder searchTheseFields = QueryBuilders.boolQuery();
for (String searchFields : searchTheseFieldsArray) {
        searchTheseFields .should(QueryBuilders.matchPhrasePrefixQuery(searchFields, **SearchText** ));
            }

```

2. **multiple term queries with fileds and values**

```auto
BoolQueryBuilder filterFields = QueryBuilders.boolQuery();
for (Map.Entry<String, Object> entry : filterTheseFields.entrySet()) {
                filterFields.must(QueryBuilders.termQuery(entry.getKey(), entry.getValue()));
            }

```

1. **multiple range queries**

```auto
BoolQueryBuilder rangeFilter1 = QueryBuilders.boolQuery();
BoolQueryBuilder rangeFilter2 = QueryBuilders.boolQuery();

rangeFilter1.should(QueryBuilders.rangeQuery(key).gte("gteVal").lte("lteVal"))
                               .should(QueryBuilders.boolQuery().mustNot(QueryBuilders.existsQuery(key)));

```

And finally add all these queries to a single Query Builder like below and call using client.

```auto
BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery()
                .must(searchTheseFields)
                .must(filterFields)
                .filter(rangeFilter1);

SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(queryBuilder);
        searchSourceBuilder.from(data.getFrom());
        searchSourceBuilder.size(data.getSize());
        
SearchRequest searchRequest = new SearchRequest();
        searchRequest.indices(passing indices here);
        searchRequest.source(searchSourceBuilder);
        
SearchResponse response = client.search(searchRequest);

```

---

<div class="post-metadata">

**Author:** ![ltrotta](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/ltrotta/32/124003_2.png) [@ltrotta](https://discuss.elastic.co/u/ltrotta)\
**Post date:** [May 6, 2024, 1:53pm UTC](https://discuss.elastic.co/t/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-client-of-version-8-x/358709/2 "2024-05-06T13:53:44Z")

</div>

Hello, sorry I'm not getting the question, are you having problems translating any of these queries?

---

<div class="post-metadata">

**Author:** ![Aswini\_Kumar\_Rout](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/aswini_kumar_rout/32/42165_2.png) [@Aswini\_Kumar\_Rout](https://discuss.elastic.co/u/Aswini_Kumar_Rout)\
**Post date:** [June 16, 2024, 1:51pm UTC](https://discuss.elastic.co/t/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-client-of-version-8-x/358709/3 "2024-06-16T13:51:22Z")

</div>

I did it, initially I was facing some issues as I was not able to find some classes which was there earlier but now it's working fine. I have posted the converted code in SO - [Elasticsearch - Migrating from Java High Level Rest Client to New Java API Client of Version 8.x - Stack Overflow](https://stackoverflow.com/questions/78424441/elasticsearch-migrating-from-java-high-level-rest-client-to-new-java-api-clien)

Thanks
