[Elasticsearch] bulk write ์ตœ์ ํ™”

[์›๋ณธ ๋งํฌ]

elasticsearch๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ํ•˜๋‚˜์”ฉ insert/updateํ•˜๋Š”๊ฑธ ์ง€์›ํ•˜๊ธด ํ•˜์ง€๋งŒ, ์„ฑ๋Šฅ์ ์ธ ๋ฌธ์ œ๋กœ ์ธํ•ด์„œ ์—ฌ๋Ÿฌ๊ฐœ๋ฅผ ๋ฌถ์–ด์„œ bulk write๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ•๋ ฅํ•˜๊ฒŒ ๊ถŒ์žฅํ•˜๋Š” ํŽธ์ด๋‹ค.

elastcsearch๋Š” batch ์ฒ˜๋ฆฌ/๋ฏธ์ฒ˜๋ฆฌ์‹œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๊ฐ„๊ทน์ด ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋น„๊ตํ•˜๋ฉด ์ •๋ง ๋งค์šฐ ํฐ ํŽธ์ด๋‹ค.
์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ์ธ๋ฑ์Šค ๊ตฌ์กฐ๋ฅผ ์ข€ ๋…ํŠนํ•˜๊ฒŒ ์žก์•„๋†”์„œ ๊ทธ๋Ÿฐ๊ฑด๋ฐ, ์ž์„ธํ•œ ์‚ฌ์ •์€ ๋ณ„๋„ ํฌ์ŠคํŠธ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://blog.naver.com/sssang97/223640540316

API ์ŠคํŽ™์€ ๋‹ค์Œ ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•œ๋‹ค.
https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-bulk.html




์ ๋‹นํ•œ ๋ฐฐ์น˜ ํฌ๊ธฐ

๊ทธ๋Ÿฌ๋ฉด ํ•œ๋ฒˆ์— ๋ช‡๊ฐœ์”ฉ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ์ ์ ˆํ• ๊นŒ?
์ด๊ฑด ๊ฐœ์ˆ˜๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ณด๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ ํฌ๊ธฐ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ด์•ผ ํ•œ๋‹ค. ํ˜„์žฌ ์Œ“์—ฌ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์˜ ํ‰๊ท  ๋ฐ์ดํ„ฐ ํฌ๊ธฐ๋ฅผ ์กฐ์‚ฌํ•ด์„œ ๊ทธ๊ฑธ๋กœ ์ถ”์‚ฐ์„ ํ•ด๋ด์•ผ ํ•œ๋‹ค.

ํฌ๊ธฐ์— ๋Œ€ํ•ด์„œ๋Š” ๊ณต์‹ ๋ฌธ์„œ์—์„œ๋„ ๋ช…ํ™•ํ•œ ๋‹ต์ด ์žˆ์ง„ ์•Š๊ณ , ๋ฐฐ์น˜๋‹น 5mb~15mb ์ •๋„์—์„œ ์‹œ์ž‘ํ•ด์„œ ์ ์ง„์ ์œผ๋กœ ๋Š˜๋ ค๋ณด๋ผ๊ณ  ํ•œ๋‹ค. ํ•˜๋“œ์›จ์–ด ์ŠคํŽ™์ด๋‚˜ ํ™˜๊ฒฝ์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋‚ด ๊ฒฝ์šฐ์—๋Š” ๋ฌธ์„œ๋ณ„ ํฌ๊ธฐ๊ฐ€ 10k ์ •๋„๋ผ์„œ 500๊ฐœ๋ฅผ ๋ฌถ์–ด์„œ(5mb=10k*500) ์ ๋‹นํžˆ ์ฒ˜๋ฆฌํ–ˆ๋‹ค.



์ฐธ์กฐ
https://stackoverflow.com/questions/18488747/what-is-the-ideal-bulk-size-formula-in-elasticsearch
https://www.elastic.co/guide/en/elasticsearch/guide/current/indexing-performance.html#_using_and_sizing_bulk_requests