ํ‹ฐ์Šคํ† ๋ฆฌ ๋ทฐ

ElasticSearch๋Š” ๋ฃจ์”ฌ ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ ์†Œ์Šค ๊ฒ€์ƒ‰ ์—”์ง„์ž…๋‹ˆ๋‹ค. JSON ๊ธฐ๋ฐ˜์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํฌ์ŠคํŒ…์€ ElasticSearch ๊ธฐ์ดˆ์— ๋Œ€ํ•ด ์„ค๋ช…๋“œ๋ฆฌ๊ณ ์ž ํ•ฉ๋‹ˆ๋‹ค.

 

ElasticSearch์˜ ํŠน์ง•

  • ์ค€ ์‹ค์‹œ๊ฐ„ ๊ฒ€์ƒ‰ ์—”์ง„: ์‹ค์‹œ๊ฐ„์ด๋ผ๊ณ  ์ƒ๊ฐํ• ๋งŒํผ ์ƒ‰์ธ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งค์šฐ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰๋จ. ElasticSearch ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š” ๋™์•ˆ์—๋Š” ๊ณ„์†ํ•ด์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž…๋ ฅ(์ƒ‰์ธ)๋˜๊ณ  ์‹ค์‹œ๊ฐ„์— ๊ฐ€๊นŒ์šด ์†๋„๋กœ ์ƒ‰์ธ๋œ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ํด๋Ÿฌ์Šคํ„ฐ ๊ตฌ์„ฑ: ํ•œ๋Œ€ ์ด์ƒ์˜ ๋…ธ๋“œ๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋†’์€ ์ˆ˜์ค€์˜ ์•ˆ์ •์„ฑ์„ ์ด๋ฃจ๊ณ  ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐํ•  ์ˆ˜ ์žˆ์Œ
    • ํด๋Ÿฌ์Šคํ„ฐ: ์—ฌ๋Ÿฌ๋Œ€์˜ ์ปดํ“จํ„ฐ ํ˜น์€ ๊ตฌ์„ฑ ์š”์†Œ๋“ค์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๊ฒฐํ•ฉํ•˜์—ฌ ์ „์ฒด๋ฅผ ํ•˜๋‚˜์˜ ์ปดํ“จํ„ฐ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ธฐ์ˆ 
    • ์•ˆ์ •์ ์ด๋ฉฐ ๋ถ€ํ•˜๋ฅผ ๋ถ„์‚ฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.
  • ์Šคํ‚ค๋งˆ๋ฆฌ์Šค: ์ž…๋ ฅ๋  ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ๋ฏธ๋ฆฌ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋™์ ์œผ๋กœ ์Šคํ‚ค๋งˆ๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ
    • ๋ฌธ์„œ์— ์–ด๋–ค ํ•„๋“œ๋ฅผ ์ €์žฅํ•  ๊ฒƒ์ธ์ง€ ์‚ฌ์ „์— ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
  • Rest API: Rest API ๊ธฐ๋ฐ˜์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ง€์›ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์–ด๋–ค ์–ธ์–ด๋กœ๋„ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค.
    • python์œผ๋กœ๋„ requests๋ฅผ ํ†ตํ•ด ์š”์ฒญ์„ ๋ณด๋‚ด ์›ํ•˜๋Š” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

ElasticSearch ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ์—ญํŒŒ์ผ ์ƒ‰์ธ ๊ตฌ์กฐ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ์žˆ์œผ๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ–ˆ์„ ๋•Œ๋Š” JSONํ˜•์‹์œผ๋กœ ์ „๋‹ฌ๋œ๋‹ค. ์—ฌ๊ธฐ์„œ ์—ญ์ƒ‰์ธ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜์ž๋ฉด ์ผ๋ฐ˜์ƒ‰์ธ์€ ๋ฌธ์„œ ID๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ๋ฌธ์„œ์— ํฌํ•จ๋œ ๋ชจ๋“  ๋‹จ์–ด๋“ค์„ ์ƒ‰์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋ผ๋ฉด ๋ฐ˜๋Œ€๋กœ ์—ญ์ƒ‰์ธ์€ ๋‹จ์–ด๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•ด๋‹น ๋‹จ์–ด๊ฐ€ ํฌํ•จ๋œ ๋ชจ๋“  ๋ฌธ์„œ๋“ค์„ ์ƒ‰์ธํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค. ์•„๋ž˜ ๋‚ด์šฉ์„ ๋ดค์„ ๋•Œ ๊ณ ์–‘์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ์ฐพ์•„๋ณธ๋‹ค๋ฉด 1, 3, 6๋ฒˆ ๋ฌธ์„œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

์ถœ์ฒ˜: https://spotintelligence.com/2023/10/30/inverted-indexing/

 

๋ฌธ์„œ ์ƒ‰์ธ๊ณผ ์กฐํšŒ

ElasticSearch๋Š” JSON ํ˜•ํƒœ์˜ ๋ฌธ์„œ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์Šคํ‚ค๋งˆ๋ฆฌ์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•˜๊ธฐ ์œ„ํ•ด ์ •ํ˜•ํ™”๋œ ๋ฌธ์„œ์˜ ์Šคํ‚ค๋งˆ๋ฅผ ๋ฏธ๋ฆฌ ์ •์˜ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค.(๊ทธ๋ ‡์ง€๋งŒ ํ™•์‹คํžˆ ํ•˜๊ธฐ ์œ„ํ•ด ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘๋Š” ๊ฑธ๊นŒ?)

REST API ๋ฉ”์„œ๋“œ

  • PUT: ์ž…๋ ฅ
  • POST: ์ˆ˜์ •
  • DELETE: ์‚ญ์ œ
  • GET: ์กฐํšŒ
localhost:9200/user/_doc

 

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋น„๊ต

ElasticSearch RDBMS
Index Database
Shard Partition
Type Table
Document Row
Field Column
Mapping Schema
Query DSL SQL

 

REST API์™€ SQL ๋น„๊ต

ElasticSearch HTTP Method RDBMS SQL ์ปค๋ฉ˜ํŠธ
GET SELECT  
PUT INSERT  
POST UPDATE, SELECT ์ด ๋ถ€๋ถ„์ด ํ—ท๊ฐˆ๋ ธ๋Š”๋ฐ select์˜ ์—ญํ• ๋„ ํ•œ๋‹ค๋Š” ๊ฒƒ!
DELETE DELETE  
HEAD (์ธ๋ฑ์Šค ์ •๋ณด ํ™•์ธ)    

 

์žฅ๋‹จ์ 

ES๋Š” NoSQL์˜ ์ผ์ข…์œผ๋กœ ๋ถ„์‚ฐ์ฒ˜๋ฆฌ๋ฅผ ํ†ตํ•ด ์‹ค์‹œ๊ฐ„์„ฑ์œผ๋กœ ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•จ. ๋Œ€๋Ÿ‰์˜ ๋น„์ •ํ˜• ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

์žฅ์ 

  • ์˜คํ”ˆ์†Œ์Šค ๊ฒ€์ƒ‰์—”์ง„
  • ์ „๋ฌธ๊ฒ€์ƒ‰
  • ํ†ต๊ณ„๋ถ„์„ - Kibana๋ฅผ ์—ฐ๊ฒฐํ•˜๋ฉด ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋กœ๊ทธ๋ฅผ ๋ถ„์„ํ•˜๊ณ  ์‹œ๊ฐํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์Šคํ‚ค๋งˆ๋ฆฌ์Šค: ์ •ํ˜•ํ™”๋˜์ง€ ์•Š์€ ๋ฌธ์„œ๋„ ์ž๋™์œผ๋กœ ์ƒ‰์ธํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • RESTful API: HTTP ๊ธฐ๋ฐ˜์˜ RESTful์„ ํ™œ์šฉํ•˜๊ณ  ์š”์ฒญ/์‘๋‹ต์— JSON์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์–ธ์–ด์—์„œ ํ™œ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • Multi-tenancy: ์„œ๋กœ ์ƒ์ดํ•œ ์ธ๋ฑ์Šค์ผ์ง€๋ผ๋„ ๊ฒ€์ƒ‰ํ•  ํ•„๋“œ๋ช…์ด ๊ฐ™์œผ๋ฉด ์—ฌ๋Ÿฌ ์ธ๋ฑ์Šค๋ฅผ ํ•œ๋ฒˆ์— ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • Document-Oriented: ์—ฌ๋Ÿฌ ๊ณ„์ธต ๊ตฌ์กฐ์˜ ๋ฌธ์„œ๋กœ ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๊ณ„์ธต ๊ตฌ์กฐ๋กœ๋œ ๋ฌธ์„œ๋„ ํ•œ๋ฒˆ์˜ ์ฟผ๋ฆฌ๋กœ ์‰ฝ๊ฒŒ ์กฐํšŒํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์—ญ์ƒ‰์ธ
  • ํ™•์žฅ์„ฑ: ๋ถ„์‚ฐ ํ™˜๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋‹จ์ 

  • ์ค€์‹ค์‹œ๊ฐ„ → ์™„์ „ ์‹ค์‹œ๊ฐ„์€ ์•„๋‹ˆ๋‹ค.
  • ํŠธ๋žœ์žญ์…˜, ๋กค๋ฐฑ์„ ์ง€์›ํ•˜์ง€ ์•Š์•„ ์ž…๋ ฅ์— ์ฃผ์˜ํ•  ๊ฒƒ!
  • ๋ฐ์ดํ„ฐ์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ์ œ๊ณตํ•˜์ง€ ์•Š๋Š”๋‹ค.

NoSQL๊ณผ ์ฐจ์ด์ ์€ ์ •๋ณด๋ฅผ ์žˆ๋Š” ๊ทธ๋Œ€๋กœ๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ์ด ์•„๋‹Œ ์œ ์˜์–ด, ๋™์˜์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ์œ ์˜์–ด๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด์„  ํ…์ŠคํŠธ ํ˜•ํƒœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ํ˜•ํƒœ์†Œ ๋ถ„ํ• ์„ ํ•œ ๋’ค ๋ฌธ์„œ๋ณ„๋กœ ์˜๋ฏธ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋งŒ ์ถ”์ถœํ•˜์—ฌ ๊ฒ€์ƒ‰ํ•œ ๊ฒƒ๊ณผ ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ๋ฌธ์„œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค.

 

์ฐธ๊ณ 

์ตœ๊ทผ์— ์˜ฌ๋ผ์˜จ ๊ธ€
ยซ   2025/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
Total
Today
Yesterday