๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋ฅผ ํ™œ์šฉํ•œ ํ•œ๊ตญ์–ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ๊ธฐ์ˆ  ๊ฐœ๋ฐœ๊ณผ ์ตœ์ ํ™” ๋ฐฉ์•ˆ ์—ฐ๊ตฌ

by ๊ธฐ์ฐจ๋†€์ด 2023. 11. 26.

1. Elasticsearch๋ž€

Elasticsearch๋Š” ์˜คํ”ˆ ์†Œ์Šค ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„์œผ๋กœ, Apache Lucene์„ ๊ธฐ๋ฐ˜์œผ๋กœํ•œ ๋ถ„์‚ฐ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„์ž…๋‹ˆ๋‹ค. Elasticsearch๋Š” RESTful API๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ๊ฒ€์ƒ‰, ๋ถ„์„, ์‹œ๊ฐํ™”ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Elasticsearch๋Š” ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ์†ํ•˜๊ณ  ํšจ์œจ์ ์œผ๋กœ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ณ  ๋ถ„์„ํ•˜๋Š” ๋ฐ์—๋„ ์šฉ์ดํ•ฉ๋‹ˆ๋‹ค. Elasticsearch๋Š” ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๊ณ ๊ฐ€์šฉ์„ฑ, ํ™•์žฅ์„ฑ, ๋ณต๊ตฌ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋Œ€๊ทœ๋ชจ์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์—์„œ ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. Elasticsearch์˜ ํŠน์ง•

Elasticsearch๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค:

๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ์—”์ง„

  • Elasticsearch๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ์—”์ง„์ž…๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ, ์ˆซ์ž, ์ง€๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜

  • Elasticsearch๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ๋กœ ๊ตฌ์„ฑ๋œ ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ๋Š” ์—ฌ๋Ÿฌ ๋…ธ๋“œ์— ์ž๋™์œผ๋กœ ๋ณต์ œ๋˜๋ฏ€๋กœ ๋ฐ์ดํ„ฐ ์œ ์‹ค์˜ ์œ„ํ—˜์„ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ถ„์‚ฐ ์•„ํ‚คํ…์ฒ˜๋Š” ๋†’์€ ๊ฐ€์šฉ์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ์ œ๊ณตํ•˜์—ฌ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„

  • Elasticsearch๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ์‹ค์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณ€๊ฒฝ๋œ ๋ฐ์ดํ„ฐ๋Š” ์ฆ‰์‹œ ์ƒ‰์ธํ™”๋˜๋ฏ€๋กœ ์‚ฌ์šฉ์ž๋Š” ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ตœ์‹  ๊ฒฐ๊ณผ๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

RESTful API

  • Elasticsearch๋Š” RESTful API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ์‰ฝ๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”, ๊ฒ€์ƒ‰ ๋ฐ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๊ฐ„ํŽธํ•œ ๋ฌธ๋ฒ•๊ณผ ๋‹ค์–‘ํ•œ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๊ฐœ๋ฐœ์ž๊ฐ€ ํšจ์œจ์ ์œผ๋กœ Elasticsearch๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ™•์žฅ์„ฑ ๋ฐ ์œ ์—ฐ์„ฑ

  • Elasticsearch๋Š” ๋Œ€๊ทœ๋ชจ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๋Šฅ๋ ฅ๊ณผ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง€์›ํ•˜๋Š” ์œ ์—ฐ์„ฑ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฐ์ดํ„ฐ์˜ ์–‘์ด ์ฆ๊ฐ€ํ•˜๋ฉด ๋” ๋งŽ์€ ๋…ธ๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ์‹œ์Šคํ…œ์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋˜ํ•œ, Elasticsearch๋Š” ๋‹ค์–‘ํ•œ ํ”Œ๋Ÿฌ๊ทธ์ธ๊ณผ ํ†ตํ•ฉ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜์—ฌ ๋” ๋งŽ์€ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    3. Elasticsearch์˜ ์ฃผ์š” ์šฉ๋„

Elasticsearch๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฃผ์š” ์šฉ๋„๋กœ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค:

๊ฒ€์ƒ‰ ์—”์ง„

  • Elasticsearch๋Š” ๋Œ€์šฉ๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ•๋ ฅํ•œ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ํ…์ŠคํŠธ, ์ˆซ์ž, ์ง€๋ฆฌ์  ๋ฐ์ดํ„ฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์œ ํ˜•์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋กœ๊น… ๋ฐ ๋ถ„์„

  • Elasticsearch๋Š” ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘, ์ƒ‰์ธํ™”ํ•˜๊ณ , ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์„œ๋ฒ„ ๋กœ๊ทธ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋กœ๊ทธ, ๋ณด์•ˆ ๋กœ๊ทธ ๋“ฑ ๋‹ค์–‘ํ•œ ์ข…๋ฅ˜์˜ ๋กœ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํ•ด๊ฒฐํ•˜๊ณ  ๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ชจ๋‹ˆํ„ฐ๋ง

  • Elasticsearch๋Š” ์‹œ์Šคํ…œ, ์„œ๋น„์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ ๋‹ค์–‘ํ•œ ์š”์†Œ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฉ”ํŠธ๋ฆญ ๋ฐ์ดํ„ฐ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ์ˆ˜์ง‘, ์ƒ‰์ธํ™”ํ•˜์—ฌ ์‹œ๊ฐํ™” ๋ฐ ๊ฒฝ๊ณ  ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋น„์ฆˆ๋‹ˆ์Šค ์ธํ…”๋ฆฌ์ „์Šค

  • Elasticsearch๋Š” ๋น„์ฆˆ๋‹ˆ์Šค ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ๋‹ค์–‘ํ•œ ์ง‘๊ณ„, ๊ทธ๋ฃนํ™” ๋“ฑ์˜ ๋ถ„์„ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐํ™” ๋„๊ตฌ์™€ ์—ฐ๋™ํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์‹œ๊ฐ์ ์œผ๋กœ ๋ถ„์„ํ•˜๊ณ  ์ธ์‚ฌ์ดํŠธ๋ฅผ ๋„์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‹œ์Šคํ…œ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋ชจ๋‹ˆํ„ฐ๋ง

  • Elasticsearch๋Š” ์‹œ์Šคํ…œ, ์„œ๋น„์Šค, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ์˜ ์„ฑ๋Šฅ๊ณผ ์ƒํƒœ๋ฅผ ๋ชจ๋‹ˆํ„ฐ๋งํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
  • ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ์ˆ˜์ง‘, ๋ฉ”ํŠธ๋ฆญ ์ˆ˜์ง‘, ์ด๋ฒคํŠธ ๊ธฐ๋ก ๋“ฑ์„ ํ†ตํ•ด ์‹œ์Šคํ…œ์˜ ๋ฌธ์ œ๋ฅผ ์‹ ์†ํ•˜๊ฒŒ ํŒŒ์•…ํ•˜๊ณ  ๋Œ€์‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ๊ฒ€์ƒ‰

  • Elasticsearch๋Š” ๊ธฐ์—… ๋‚ด์—์„œ ์ •๋ณด ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ๋‚ด๋ถ€ ๋ฌธ์„œ, ์‚ฌ์šฉ์ž ํ”„๋กœํ•„, ํ†ต๊ณ„ ๋ฐ์ดํ„ฐ ๋“ฑ ๊ธฐ์—…์˜ ๋‹ค์–‘ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ‰์ธํ™”ํ•˜๊ณ , ์งˆ์˜์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ •ํ™•ํ•œ ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€