Elasticsearch ๋ฐ์ดํฐ ์ฝ์ ๋ฐ ์กฐํ ๋ฌธ์ ํด๊ฒฐ ๊ณผ์
Elasticsearch์ CSV ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ๊ณ ์กฐํํ๋ ๊ณผ์ ์์ ๋ฐ์ดํฐ๊ฐ ์กฐํ๋์ง ์์ ์์ธ์ ๋ถ์ํ๊ณ ํด๊ฒฐํ๋ ๊ณผ์ ์ ์ ๋ฆฌํด ๋ดค๋ค.
๋ฐ์ํ ๋ฌธ์ ์ ์์ธ ๋ถ์
1. ์ธ๋ฑ์ค ๋ค์ด๋ฐ ๋ถ์ผ์น ๋ฌธ์
๋ฌธ์ ์ํฉ
- Elasticsearch์์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ ๋๋ "job-opening"์ผ๋ก ์ค์ ํ์ง๋ง, ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ๋๋ "job_opening"์ผ๋ก ์กฐํํ๋ ์ค์๋ฅผ ๋ฒํ๋ค.
- Kibana์์ ์กฐํ ์ ๋ฐ์ดํฐ๊ฐ ๋ํ๋์ง ์์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ธ๋ฑ์ค๋ช ์ ์์(static final)๋ก ์ ์ํ์ฌ, ์์ฑ๊ณผ ์กฐํ ์ ์ผ๊ด์ฑ์ ์ ์งํ๋ค.
public static final String INDEX_NAME = "job-opening";
2. ๋์ ๋งคํ(@Postconstruct ์คํ ์์) ๋ฌธ์
๋ฌธ์ ์ํฉ
- CSV ๋ฐ์ดํฐ ์ฝ์ ๋ก์ง์ @PostConstruct๋ก ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ์ ํ๋ฆฌ์ผ์ด์ ์คํ ์ด๊ธฐ ๋จ๊ณ์ ์ธ๋ฑ์ค๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ด ๋ฒ๋ ธ๋ค.
- ๊ทธ ๊ฒฐ๊ณผ, ์๋ Integer ํ์ ์ด์ด์ผ ํ ํ๋๊ฐ Elasticsearch์์ ์๋์ผ๋ก ๋์ ๋งคํ๋์ด keyword ํ์ ์ผ๋ก ์ ์ฅ๋์๋ค.
ํด๊ฒฐ ๋ฐฉ๋ฒ
- CSV ๋ฐ์ดํฐ ์ฝ์ ๋ก์ง์ ์ ํ๋ฆฌ์ผ์ด์ ์ด๋ฒคํธ ๋ฆฌ์ค๋(ApplicationListener) ๋ฑ์ ํ์ฉํ์ฌ ์คํ ์์๋ฅผ ๋ช ํํ ์ ์ํ์ฌ ์ธ๋ฑ์ค๊ฐ ๋ฏธ๋ฆฌ ์์ฑ๋์ง ์๋๋ก ํ๋ค.
- CSV ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ๋ฃ๋ ๋ณ๋์ API๋ฅผ ๋ง๋ค์ด ๊ด๋ฆฌํ๋ค.
3. Insert ๋์ Update ์ฟผ๋ฆฌ ์คํ ๋ฌธ์
๋ฌธ์ ์ํฉ
- ๋ฐ์ดํฐ ์ฝ์ ์ Elasticsearch์์ ๋ฌธ์์ _id๊ฐ ์ค๋ณต๋์ด ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ฐ๋(Update) ํ์์ด ๋ฐ์ํ๋ค.
์์ธ ๋ถ์
- CSV ๋ฐ์ดํฐ๋ฅผ Elasticsearch์ ์ฝ์ ํ ๋ _id ํ๋๋ฅผ ๊ณ ์ ๋ ๊ฐ์ผ๋ก ์ค์ ํ์ฌ ๋ฌธ์๊ฐ ๊ณ์ ๋ฎ์ด์ฐ๊ธฐ ๋์๋ค.
์ ๋ฆฌ
- ์ธ๋ฑ์ค ์ด๋ฆ์ ๋ฐ๋์ ์์๋ฅผ ํ์ฉํด ์ผ๊ด๋๊ฒ ๊ด๋ฆฌํ๊ธฐ
- ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ ํ์ ์ ์ฌ์ ์ ์ ํํ ๋งคํํ๊ธฐ (@PostConstruct ๋์ ์ด๋ฒคํธ ๋ฆฌ์ค๋๋ ์๋ API ํ์ฉ)
- Elasticsearch ๋ฌธ์ _id ํ๋๋ ์ค๋ณต๋์ง ์๊ฒ ๊ด๋ฆฌํ๊ธฐ