我正在使用python dsl库
当我使用execute((进行标准搜索时,这是一个将返回响应对象(https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html(的方法。 看起来有 .search 在它的核心
在某些情况下,我使用滚动. 这有效,但它返回一个字典。
我想做的是使用滚动,但以与 execute(( 相同的方式返回响应
DSL Elasticsearch 函数可以做到这一点。
def execute(self, ignore_cache=False):
"""
Execute the search and return an instance of ``Response`` wrapping all
the data.
:arg response_class: optional subclass of ``Response`` to use instead.
"""
if ignore_cache or not hasattr(self, '_response'):
es = connections.get_connection(self._using)
self._response = self._response_class(
self,
es.search(
index=self._index,
doc_type=self._doc_type,
body=self.to_dict(),
**self._params
)
)
return self._response
我需要做的(我认为(是复制它,但用于滚动,以便返回的所有数据都是相同的类型。
任何帮助将不胜感激
谢谢
我相信您正在寻找的是Search
对象上的scan
方法,该方法使用引擎盖下的扫描/滚动API返回文档的迭代器 - https://elasticsearch-dsl.readthedocs.io/en/latest/search_dsl.html#pagination
希望这有帮助!