I am in the process of Elasticsearch upgrade from 6 to 7. These are the dependencies we have upgarded
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-elasticsearch</artifactId>
<version>4.4.2</version>
</dependency>
with this upgrade, I have observed that search APIs are removed from elasticsearch repository.
And the Search queries we have in the application are
Page<class1> c1 = ElasticSearchRepository.search(queryStringQuery(searchable).fields(fields).escape(false).analyzeWildcard(true), pageable);
Page<class1> c1 = ElasticsearchRepository.search(BoolQueryBuilder, pageable);
I am planning to change them and use elasticsearchTemplate as below
NativeSearchQueryBuilder queryBuilder = new NativeSearchQueryBuilder()
.withQuery(queryStringQuery(searchable).fields(fields).escape(false).analyzeWildcard(true)).withPageable(pageable);
NativeSearchQuery nativeSearchQuery = queryBuilder.build();
org.springframework.data.elasticsearch.core.SearchHits<class1> accesscodeSearchHits = elasticsearchTemplate.search(nativeSearchQuery, class1.class);
I need help to get search result as Page<class1>
not SearchHits. Not sure how to get Page as a result of search API.
I do not see queryForPage(searchQuery, getEntityClass()) methods in elasticsearchOperations class.
You can convert SearchHits
to SearchPage
using SearchHitSupport
.
Consider that SearchPage
extends Page
.
SearchPage<Class1> searchPage = SearchHitSupport.searchPageFor(searchHits, pageable);