Elasticスクロール処理
通常時に、大量データを検索する時、全てのデータを取り込んでから、検索条件と一致するものを出すこととなります。
なので、Elasticsearch Scroll APIを利用して、ページごとのデータを取り出す。
流れとしては、以下のようです。
1,一回目の実行でスクロールIDを取得
POST http://localhost:9200/インデックス名/_search?scroll=2m
{"size": 100, | 1ページの出力件数 | |||
"query": { | ||||
"bool": { | ||||
何らかの絞り条件 | ||||
} | ||||
} | ||||
} |
最後の2mは、2分間保持という意味
2,二回目以降は、前回のIDを使って検索
POST http://localhost:9200/_search/scroll
{"scroll":"2m","scroll_id" : "すごく長い文字列" | ||||
} |
ループ処理が要るので、以下が参考となります。 https://gist.github.com/drorata/146ce50807d16fd4a6aa