Elasticsearch でスクロールするときは、各スクロールで最新のものを提供することが重要scroll_id
です。
最初の検索リクエストと後続の各スクロール リクエストは、新しい scroll_id を返します — 最新の scroll_id のみを使用する必要があります。
次の例 (ここから取得) は、私を困惑させます。まず、スクロールの初期化:
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クライアントで内部的に発生すると思います。しかし、私はそれがどのように機能するのか理解していません...