Search code examples
javaspring-bootsearchalgolia

Use of deprecated `page`/`offset` parameter in browse error from ALGOLIA


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


Solution

  • 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).