[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