【发布时间】:2014-09-19 18:13:08
【问题描述】:
在 elasticsearch 中滚动时,在每次滚动时提供最新的scroll_id 很重要:
初始搜索请求和每个后续滚动请求返回 一个新的scroll_id — 只应使用最近的scroll_id。
下面的例子(取自here)让我很困惑。一、滚动初始化:
rs = es.search(index=['tweets-2014-04-12','tweets-2014-04-13'],
scroll='10s',
search_type='scan',
size=100,
preference='_primary_first',
body={
"fields" : ["created_at", "entities.urls.expanded_url", "user.id_str"],
"query" : {
"wildcard" : { "entities.urls.expanded_url" : "*.ru" }
}
}
)
sid = rs['_scroll_id']
然后是循环:
tweets = [] while (1):
try:
rs = es.scroll(scroll_id=sid, scroll='10s')
tweets += rs['hits']['hits']
except:
break
它有效,但我看不到 sid 的更新位置......我相信它发生在内部,在 python 客户端中;但我不明白它是如何工作的......
【问题讨论】:
-
什么时候跳出循环?我尝试了这种方法,它一直在运行,我不得不手动停止。谢谢
标签: python elasticsearch pyelasticsearch