diff --git a/ingestion/src/metadata/ingestion/ometa/mixins/es_mixin.py b/ingestion/src/metadata/ingestion/ometa/mixins/es_mixin.py index bae0f046592..0a366cd644e 100644 --- a/ingestion/src/metadata/ingestion/ometa/mixins/es_mixin.py +++ b/ingestion/src/metadata/ingestion/ometa/mixins/es_mixin.py @@ -13,6 +13,7 @@ Mixin class containing Lineage specific methods To be used by OpenMetadata class """ +import functools import traceback from typing import Generic, List, Optional, Type, TypeVar @@ -38,6 +39,7 @@ class ESMixin(Generic[T]): fqdn_search = "/search/query?q=fullyQualifiedName:{fqn}&from={from_}&size={size}&index={index}" + @functools.lru_cache() def _search_es_entity( self, entity_type: Type[T], query_string: str ) -> Optional[List[T]]: @@ -47,13 +49,13 @@ class ESMixin(Generic[T]): :param query_string: Query to run :return: List of Entities or None """ - response = self.client.get(query_string) if response: return [ self.get_by_name( - entity=entity_type, fqn=hit["_source"]["fullyQualifiedName"] + entity=entity_type, + fqn=hit["_source"]["fullyQualifiedName"], ) for hit in response["hits"]["hits"] ] or None @@ -84,12 +86,10 @@ class ESMixin(Generic[T]): ) try: - entity_list = self._search_es_entity( + response = self._search_es_entity( entity_type=entity_type, query_string=query_string ) - if entity_list: - return entity_list - + return response except KeyError as err: logger.debug(traceback.format_exc()) logger.warning(