๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ์ตœ์ข…ํ”„๋กœ์ ํŠธ/๐Ÿ› ๏ธ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…

[ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… ] Elasticsearch ์ธ๋ฑ์Šค ์‚ฝ์ž… ๋ฐ ์กฐํšŒ ์‹คํŒจ ๋ฌธ์ œ ํ•ด๊ฒฐ๊ธฐ (์ธ๋ฑ์Šค, ๋งคํ•‘, ID ์ค‘๋ณต)

by carrot0911 2025. 2. 25.

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 ํ•„๋“œ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๊ฒŒ ๊ด€๋ฆฌํ•˜๊ธฐ