I was trying to fetch all data from Algolia using browseFrom() API with pagination as below.
BrowseIndexResponse<Test> items = index
.browseFrom(new BrowseIndexQuery().setPage(pageNumber).setHitsPerPage(pageSize));
But after a particular page i got an error as shown below
{"message":"Use of deprecated `page`/`offset` parameter in browse:
you should pass the `cursor` parameter to fetch next page.
Please upgrade your api client if necessary","status":400}
Note: algolia shows nbPages: 82, nbHits: 16341
I have tried changing Algolia version and al, but it is not working. any help is appreciated
Finally found the solution,
public TestResponse getAllTestDate(String cursor, int pageSize) {
final SearchIndex<Test> index = client.initIndex(indexName, Test.class);
TestResponseDate testResponseData = new ProductListResponse();
BrowseIndexResponse<Test> items = null;
if (cursor != null) {
items = index.browseFrom(new BrowseIndexQuery().setHitsPerPage(pageSize).setCursor(cursor));
} else {
items = index.browseFrom(new BrowseIndexQuery().setHitsPerPage(pageSize));
}
testResponseData .setCursor(items.getCursor());
testResponseData .setTest(items.getHits());
return testResponseData ;
}
First time we are not passing 'cursor' value, After first hit we will get a 'cursor' value from algolia, use that for next algolia hit. repeat this until we are getting 'cursor' value as null (that means, for last page algolia returns 'cursor' value as null).