How to Set Up and Use Elasticsearch with Strapi

Hi, I need to override this controller to get the default strapi response with the data and meta object for clean and standard responses and pagination from the search result.

code:
search_restaurants: async(ctx, next) => {
try {
const data = await strapi.service(‘api::search.search’).search_restaurants(ctx.query)
// console.log(‘here’, ctx.query)
ctx.body = data
} catch (err) {
ctx.body = err;
}
}

desire response schema:
Screenshot 2023-10-05 173354

its there any example for implementing this feature?
Thanks so much!