from typing import Any, Dict, List from server.db.es_connector import ES_INSTANCE __all__ = ["BaseSearchesHelper"] class BaseSearchesHelper: _es_connector = ES_INSTANCE def _get_query(self, entities_ids: list) -> Dict[str, Any]: query: dict = {"bool": {"must": []}} query["bool"]["must"].append({"terms": {"_id": entities_ids}}) return query def _get_sort(self) -> Dict: return {} def _update_data(self, data: List) -> List[Dict[str, Any]]: results: List[Dict[str, Any]] = [] for result in data: tmp = result["_source"] tmp.update({"id": result["_id"], "score": result["_score"]}) results.append(tmp) return results async def _make_search(self, entities_ids: List[str], index: str) -> List: query = self._get_query(entities_ids) sort = self._get_sort() data = await self._execute_search( index=index, query=query, sort=sort, from_=0, size=len(entities_ids), ) return data async def _execute_search( self, index: str, query: dict, sort: dict, from_: int, size: int, ) -> List: _, data, _ = await self._es_connector.search( index=index, query=query, sort=sort, from_=from_, size=size, ) return data