diff --git a/abcd/backends/atoms_opensearch.py b/abcd/backends/atoms_opensearch.py index e7721975..1a3c1246 100644 --- a/abcd/backends/atoms_opensearch.py +++ b/abcd/backends/atoms_opensearch.py @@ -533,8 +533,7 @@ def count(self, query: Union[dict, str, None] = None) -> int: def property(self, name, query: Union[dict, str, None] = None) -> list: """ Gets all values of a specified property for matching documents in the - database. This method is very slow, so it is preferable to use - alternative methods where possible, such as count_property. + database. Alternative methods, such as count_property, may be faster. Parameters ---------- @@ -551,15 +550,16 @@ def property(self, name, query: Union[dict, str, None] = None) -> list: } return [ - hit["_source"][format(name)] + hit["fields"][format(name)][0] for hit in helpers.scan( self.client, index=self.index_name, query=query, - stored_fields=format(name), - _source=format(name), + _source=False, + stored_fields="_none_", + docvalue_fields=[format(name)], ) - if format(name) in hit["_source"] + if format(name) in hit["fields"] ] def count_property(self, name, query: Union[dict, str, None] = None) -> dict: