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