Amenable
Amenable's Blog
Amenable
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (189)
    • ๐Ÿ“‚ JAVA (87)
      • ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ” (65)
      • ์ฃผ์š” ๊ฐœ๋… (22)
    • ๐Ÿ“‚ ๊ฐœ๋ฐœ ์„œ์  (22)
      • ์‹ค์šฉ์ฃผ์˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ (1)
      • ๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด (2)
      • ํด๋ฆฐ ์ฝ”๋“œ (8)
      • ํ•จ๊ป˜ ์ž๋ผ๊ธฐ (1)
      • ๊ทธ๋ฆผ์œผ๋กœ ๋ฐฐ์šฐ๋Š” HTTP&Network Basic (10)
    • ๐Ÿ“‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค (8)
      • ๊ฐœ๋… (8)
      • ๋ฌธ์ œํ’€์ด (0)
    • ๐Ÿ“‚ ๋„คํŠธ์›Œํฌ (14)
      • ๊ฐœ๋… (6)
      • ์„ฑ๊ณต๊ณผ ์‹คํŒจ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” 1%์˜ ๋„คํŠธ์›Œํฌ ์›๋ฆฌ (8)
    • ๐Ÿ“‚ ์Šคํ”„๋ง (13)
      • ๊ธฐ๋ณธ ๊ฐœ๋… (13)
    • ๐Ÿ“‚ WEB (5)
    • ๐Ÿ“‚ ์ž๋ฃŒ๊ตฌ์กฐ (12)
      • ๊ฐœ๋… (2)
      • ์ •๋ ฌ (8)
      • ํŠธ๋ฆฌ (2)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (10)
      • ์ตœ์†Œ์‹ ์žฅํŠธ๋ฆฌ (2)
      • ์ตœ๋‹จ ๊ฒฝ๋กœ (2)
      • ๋ฌธ์ž์—ด (2)
      • ETC (4)
    • ๐Ÿ“‚ ์•Œ๊ณ ๋ฆฌ์ฆ˜_๋ฌธ์ œํ’€์ด (4)
      • BOJ_๋ฐฑ์ค€ (4)
    • ๐Ÿ“‚ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (3)
    • ๐Ÿ“‚ DevOps (2)
      • ๋ฐฐํฌ (2)
    • ๐Ÿ“‚ ํ›„๊ธฐ (8)
      • ์šฐ์•„ํ•œ ํ…Œํฌ์ฝ”์Šค(ํ”„๋ฆฌ์ฝ”์Šค) (4)
      • 2023๋…„ (3)
      • 2024๋…„ (1)
    • ๐Ÿ“‚ ํšŒ๊ณ  (1)
      • 2023๋…„ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ๐Ÿš€ GitHub

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Amenable
๐Ÿ“‚ ํ›„๊ธฐ/2023๋…„

์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch) ์ ์šฉ ํ›„๊ธฐ

์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch) ์ ์šฉ ํ›„๊ธฐ
๐Ÿ“‚ ํ›„๊ธฐ/2023๋…„

์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch) ์ ์šฉ ํ›„๊ธฐ

2023. 12. 8. 20:20

๐Ÿ“™ 1. ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ

  ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ƒ๋Œ€์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ํฐ ๋™๋ฌผ ๋ฐ์ดํ„ฐ(130๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ)๋ฅผ ์‚ฌ์šฉํ•  ์ผ์ด ์žˆ์—ˆ๋‹ค.

  ํ•„์š”ํ•œ ์ž‘์—…์€ '๋™๋ฌผ์˜ ๊ณ„์ธต์  ๋ถ„๋ฅ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์—์„œ ํŠน์ • ๊ณ„์ธต์ด ์žˆ๋Š” ๋™๋ฌผ์„ ์กฐํšŒํ•˜๋Š” ๊ฒƒ'์ด์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ์กฐํšŒ ์‹œ๊ฐ„์„ ๋‹จ์ถ•์‹œํ‚ฌ ์ˆ˜ ์žˆ์„๊นŒ ๊ณ ๋ฏผํ•˜์˜€๊ณ  ๊ทธ ๊ฒฐ๊ณผ ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค.

  ์ž‘์—…์— ๋Œ€ํ•ด์„œ ์กฐ๊ธˆ ๋” ์ž์„ธํ•˜๊ฒŒ ์‚ดํŽด๋ณด๋„๋ก ํ•˜์ž. ์›ํ•˜๋Š” ๋™์ž‘์€ '๋™๋ฌผ์˜ ๊ณ„์ธต์  ๋ถ„๋ฅ˜(higherClassification)์—์„œ ํŠน์ • ๊ณ„์ธต(ํฌ์œ ๋ฅ˜, ์–‘์„œ๋ฅ˜, ์กฐ๋ฅ˜,...)์ด ์กด์žฌํ•˜๋Š” ๋™๋ฌผ๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ'์ด๋‹ค.

  ๋ฐ์ดํ„ฐ๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Proboscidea; Elephantidae"
  ...
},
{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Rodentia; Mymorpha"
  ...
}

  ๋งŒ์•ฝ Mammalia(ํฌ์œ ๋ฅ˜)๋ผ๋Š” ๊ณ„์ธต์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋™๋ฌผ์„ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•˜๋ฉด ์•„๋ž˜ 2๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋‹ค.

{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Proboscidea; Elephantidae"
  ...
},
{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Rodentia; Mymorpha"
  ...
}

  ํ•˜์ง€๋งŒ, Elephantidae(์ฝ”๋ผ๋ฆฌ๊ณผ)๋ผ๋Š” ๊ณ„์ธต์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๋™๋ฌผ์„ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•˜๋ฉด, 2๊ฐœ๊ฐ€ ์•„๋‹Œ 1๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋งŒ ๊ฐ€์ ธ์˜ฌ ๊ฒƒ์ด๋‹ค.


{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Proboscidea; Elephantidae"
  ...
},
{
  ...
  "higherClassification": "Animalia; Chordata; Vertebrata; Mammalia; Rodentia; Mymorpha"
  ...
}

  ์ฆ‰, 130๋งŒ ๊ฑด์˜ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ์†์„ฑ(๋™๋ฌผ์˜ ๊ณ„์ธต์  ๋ถ„๋ฅ˜, higherClassification)์˜ ๊ฐ’์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์— ํŠน์ • ๋ฌธ์ž์—ด(ํฌ์œ ๋ฅ˜, ์–‘์„œ๋ฅ˜, ์กฐ๋ฅ˜,...)์ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ  ๊ทธ ๊ฐ’์„ ๊ฐ€์ ธ์™€์•ผ ํ–ˆ๋‹ค.

  ๋ฐ์ดํ„ฐ์—์„œ ์›ํ•˜๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด ์•„๋ž˜ 3๊ฐ€์ง€ ๊ธฐ์ˆ ์„ ๊ณ ๋ คํ•ด ๋ณด์•˜๋‹ค.

 

๐Ÿ“Œ 1. MySQL

  MySQL๋กœ ์œ„์˜ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด Full-Scan์„ ํ•œ๋‹ค๋Š” ๋ฌธ์ œ์ ์ด ์žˆ์—ˆ๋‹ค.

  ๋˜ํ•œ, ๋ฌธ์ž์—ด์—์„œ ํŠน์ • ๋ฌธ์ž๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์•Œ๊ธฐ ์œ„ํ•ด LIKE ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค. LIKE๊ฐ€ ๋™์ž‘ํ•˜๊ฒŒ ๋˜๋ฉด Turbo Boyer-Moore ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ž‘๋™ํ•˜๊ฒŒ ๋œ๋‹ค.

  ๊ณต์‹๋ฌธ์„œ๋ฅผ ์‚ดํŽด๋ณด๋ฉด, LIKE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์œผ๋กœ ์ธ๋ฑ์Šค๊ฐ€ ๊ฑธ๋ ค์žˆ๋Š” ๊ฒฝ์šฐ B-Tree๋ฅผ ์ด์šฉํ•˜๊ณ , ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ์—๋Š” Turbo Boyer-์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ๋˜์–ด์žˆ๋‹ค.

 

MySQL :: MySQL 8.0 Reference Manual :: 8.3.9 Comparison of B-Tree and Hash Indexes

8.3.9 Comparison of B-Tree and Hash Indexes Understanding the B-tree and hash data structures can help predict how different queries perform on different storage engines that use these data structures in their indexes, particularly for the MEMORY storage

dev.mysql.com

  Turbo Boyer-Moore์— ๋Œ€ํ•œ ๋‚ด์šฉ์€ ์•„๋ž˜์˜ ๊ธ€์„ ์ฐธ๊ณ ํ•˜์ž.

 

Turbo-BM algorithm

The Turbo-BM algorithm is an amelioration of the Boyer-Moore algorithm. It needs no extra preprocessing and requires only a constant extra space with respect to the original Boyer-Moore algorithm. It consists in remembering the factor of the text that matc

www-igm.univ-mlv.fr

  ์ด๋Ÿฌํ•œ ์‚ฌ์‹ค๊ณผ ํ•จ๊ป˜ ์‹œ๊ฐ„๋ณต์žก๋„๋ฅผ ๊ณ„์‚ฐํ•ด ๋ณด๋ฉด O(๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ_130๋งŒ ๊ฑด) x O(๋ฌธ์ž์—ด์˜ ๊ธธ์ด)๊ฐ€ ๋˜๊ฒŒ ๋œ๋‹ค.

 

๐Ÿ“Œ 2. Apatch Hive

  Apatch Hive๋ž€ ๊ตฌ์กฐํ™”๋œ ๋น…๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋ฉด HiveQL์„ ์ด์šฉํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•˜๋‘ก(๋ถ„์‚ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ)์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค.

  HiveQL์„ ํ†ตํ•ด์„œ ์กฐํšŒ๋ฅผ ์‹คํ–‰ํ•˜๋ฉด ๋‚ด๋ถ€์ ์œผ๋กœ ๋งต-๋ฆฌ๋“€์Šค ์–ธ์–ด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์ž‘์—…์„ ๊ฑฐ์น˜๊ธฐ ๋•Œ๋ฌธ์—, ๋งต๊ณผ ๋ฆฌ๋“€์Šค ๊ฐ„์˜ ์…”ํ”Œ๋ง ์ž‘์—…์œผ๋กœ ์ธํ•˜์—ฌ ์†๋„๊ฐ€ ๋А๋ฆฌ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

๐Ÿ“Œ 3. Elasticsearch

  Elasticsearch(์ดํ•˜ ES)๋Š” ์—ญ์ธ๋ฑ์Šค(Inverted Index, ์—ญ์ƒ‰์ธ)๋ฅผ ์ด์šฉํ•œ๋‹ค. (ES์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์„ค๋ช…์€ ์•„๋ž˜์— ๋‚˜์˜ต๋‹ˆ๋‹ค.)

  ์—ญ์ธ๋ฑ์Šค๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ‚ค์›Œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฌธ์„œ๋ฅผ ์ฐพ๋Š”๋‹ค. ๊ทธ๋ž˜์„œ ์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์กฐํšŒ ์ž‘์—…์ด ๋งค์šฐ ๋น ๋ฅด๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. 

 

  3๊ฐ€์ง€ ๊ธฐ์ˆ ์„ ๋น„๊ต๋ถ„์„ํ•œ ๊ฒฐ๊ณผ, ES๊ฐ€ '์ƒ๋Œ€์ ์œผ๋กœ ํฐ ๋ฐ์ดํ„ฐ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด์„ ๊ฐ€์ง„ ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š” ์ž‘์—…'์— ๊ฐ€์žฅ ์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ ES๋ฅผ ์“ฐ๊ธฐ๋กœ ํ•˜์˜€๋‹ค. 

 

๐Ÿ“™ 2. ES ๊ฐœ๋… & ํŠน์ง•

๐Ÿ“Œ 1. ๊ฐœ๋…

  ES๋Š” Apache Lucene ๊ธฐ๋ฐ˜์˜ ์˜คํ”ˆ์†Œ์Šค ๋ถ„์‚ฐ ๊ฒ€์ƒ‰ ์—”์ง„์ด๋‹ค. (Apache Lucene์€ ๋ชจ๋“  ๊ฒ€์ƒ‰์—”์ง„์˜ ์‹œ์ดˆ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋‹ค.)

  ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ธ๋ฑ์‹ฑํ•˜์—ฌ ์ €์žฅํ•˜๊ณ , ๊ฒ€์ƒ‰, ์ง‘๊ณ„ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๐Ÿ“Œ 2. ํŠน์ง•

  ES์˜ ๊ฐ€์žฅ ํฐ ํŠน์ง•์€ ์šฐ๋ฆฌ๊ฐ€ ํ”ํžˆ ์•„๋Š” ์ธ๋ฑ์Šค(forward index)๊ฐ€ ์•„๋‹Œ ์—ญ์ธ๋ฑ์Šค(inverted index)๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

  ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋  ๊ฒƒ์ด๋‹ค.

Document Words
๋ฌธ์„œ1 ์‚ฌ๊ณผ, ๋ฐ”๋‚˜๋‚˜, ๊ทค
๋ฌธ์„œ2 ์‚ฌ๊ณผ, ์žฅ๋ฏธ
๋ฌธ์„œ3 ์‚ฌ๊ณผ, ๊ณต, ๊ทค

  ๋ฐ˜๋ฉด, ์—ญ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•œ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋œ๋‹ค.

Word Document
์‚ฌ๊ณผ ๋ฌธ์„œ1, ๋ฌธ์„œ2, ๋ฌธ์„œ3
๊ทค ๋ฌธ์„œ1, ๋ฌธ์„œ3
๋ฐ”๋‚˜๋‚˜ ๋ฌธ์„œ1
์žฅ๋ฏธ ๋ฌธ์„œ2
๊ณต ๋ฌธ์„œ3

 

  ๊ทค์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค๊ณ  ํ•ด๋ณด์ž. ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐํšŒํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ…์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ์œผ๋ฉด์„œ ๊ฒ€์ƒ‰์„ ํ•  ๊ฒƒ์ด๋‹ค.

Document Words ๊ฒ€์ƒ‰(๋น„๊ตํ•ด๋ณด๋Š” ๋™์ž‘) ์กฐํšŒ(๊ฐ€์ ธ์˜ค๋Š” ๋™์ž‘)
๋ฌธ์„œ1 ์‚ฌ๊ณผ, ๋ฐ”๋‚˜๋‚˜, ๊ทค O O
๋ฌธ์„œ2 ์‚ฌ๊ณผ, ์žฅ๋ฏธ O X
๋ฌธ์„œ3 ์‚ฌ๊ณผ, ๊ณต, ๊ทค O O

  ํ•˜์ง€๋งŒ, ์—ญ์ธ๋ฑ์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ์กฐํšŒํ•˜๋ฉด ํ…์ŠคํŠธ๋ฅผ ํ•˜๋‚˜ํ•˜๋‚˜ ์ฝ์ง€ ์•Š๊ณ ๋„ ํ‚ค์›Œ๋“œ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋ฐ”๋กœ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.

Word Document ๊ฒ€์ƒ‰(๋น„๊ตํ•ด๋ณด๋Š” ๋™์ž‘) ์กฐํšŒ(๊ฐ€์ ธ์˜ค๋Š” ๋™์ž‘)
์‚ฌ๊ณผ ๋ฌธ์„œ1, ๋ฌธ์„œ2, ๋ฌธ์„œ3 X X
๊ทค ๋ฌธ์„œ1, ๋ฌธ์„œ3 O O
๋ฐ”๋‚˜๋‚˜ ๋ฌธ์„œ1 X X
์žฅ๋ฏธ ๋ฌธ์„œ2 X X
๊ณต ๋ฌธ์„œ3 X X

  ์ด๋Ÿฌํ•œ ์ด์œ ๋กœ ES๋ฅผ ์ด์šฉํ•˜๋ฉด ๋น ๋ฅธ ์†๋„๋กœ ์กฐํšŒ๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๐Ÿ“™ 3. ์ ์šฉ

  ์Šคํ”„๋ง๋ถ€ํŠธ ํ™˜๊ฒฝ์—์„œ ES๋ฅผ ์ ์šฉํ•˜์˜€๋‹ค. 'ES ์‚ฌ์šฉ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ธํŒ…, ๋ฐ์ดํ„ฐ ์‚ฝ์ž…, ๋ฐ์ดํ„ฐ ์กฐํšŒ'๋ผ๋Š” 3๊ฐ€์ง€ ๋‹จ๊ณ„๋ฅผ ์ด์šฉํ•˜์—ฌ ์‚ดํŽด๋ณด์ž.

๐Ÿ“Œ 1. ES ์‚ฌ์šฉ์„ ์œ„ํ•œ ํ™˜๊ฒฝ ์„ธํŒ…

1. dependency ์ถ”๊ฐ€

dependencies {
  implementation 'org.springframework.data:spring-data-elasticsearch:4.2.2'
}

2. config ์„ค์ •

@Configuration
@EnableElasticsearchRepositories(basePackageClasses = {Animal.class})
public class ElasticSearchConfig extends AbstractElasticsearchConfiguration {

    @Value("${elasticsearch.host}")
    private String host;

    @Value("${elasticsearch.port}")
    private int port;

    @Override
    public RestHighLevelClient elasticsearchClient() {
        ClientConfiguration clientConfiguration = ClientConfiguration.builder()
                .connectedTo(host + ":" + port)
                .build();
        return RestClients.create(clientConfiguration).rest();
    }
}

3. ๊ฐ์ฒด ์ƒ์„ฑ

@NoArgsConstructor
@Getter
public class Animal {

    @Id
    private Long id;
    private String continent;
    private String country;
    private String decimalLatitude;
    private String decimalLongitude;
    private String scientificName;
    private String family;
    private String genus;
    private String higherClassification;

    @Builder
    private Animal(Long id, String continent, String country, 
            String decimalLatitude, String decimalLongitude, String scientificName, 
            String family, String genus, String higherClassification) {
        this.id = id;
        this.continent = continent;
        this.country = country;
        this.decimalLatitude = decimalLatitude;
        this.decimalLongitude = decimalLongitude;
        this.scientificName = scientificName;
        this.family = family;
        this.genus = genus;
        this.higherClassification = higherClassification;
    }
}

4. Repository ์ƒ์„ฑ

  JpaRepository์™€ ์œ ์‚ฌํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ElasticRepository๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Repository๋ฅผ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

public interface AnimalRepository extends ElasticsearchRepository<Animal, Long>, 
        CrudRepository<Animal, Long> {

    List<Animal> findByHigherClassificationContains(String country);
}

๐Ÿ“Œ 2. ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

  ๊ธฐ์กด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ES์— ๊ฐ’์„ ๋„ฃ์–ด์ฃผ์—ˆ๋‹ค.

public void addAnimalAtES(List<Animal> animals) {
    animalRepository.saveAll(animals);
}

๐Ÿ“Œ 3. ๋ฐ์ดํ„ฐ ์กฐํšŒ

  ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํŠน์ • ๊ณ„์ธต ๊ฐ’์„ ์ด์šฉํ•˜์—ฌ ์กฐํšŒํ•œ๋‹ค.

public List<Animal> getAnimalsBy(String higherClass) {
    return AnimalRepository.findByHigherClassificationContains(higherClass);
}

 

๐Ÿ“™ 4. ๊ฒฐ๊ณผ

  ๋ณ€๊ฒฝ ์ „ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„(MySQL์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)๊ณผ ๋ณ€๊ฒฝ ํ›„ ๊ฑธ๋ฆฐ ์‹œ๊ฐ„(ES๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ)์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

  ๋ณ€๊ฒฝ ์ „(ms) ๋ณ€๊ฒฝ ํ›„(ms)
ํฌ์œ ๋ฅ˜ 1332.6 75.8
ํŒŒ์ถฉ๋ฅ˜ 1318.0 64.3
์กฐ๋ฅ˜ 1393.8 87.2
์–‘์„œ๋ฅ˜ 1353.3 87.7
๊ฐ‘๊ฐ๋ฅ˜ 1325.2 89.8
  ๋ณ€๊ฒฝ ์ „(ms) ๋ณ€๊ฒฝ ํ›„(ms)
์ „์ฒด 1346.3 81.9

 

  ES๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ธฐ์กด ๋Œ€๋น„(MySQL) ์•ฝ 16๋ฐฐ์˜ ๊ฐœ์„ ๋œ ์„ฑ๋Šฅ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. (5๊ฐœ์˜ ์ƒํ™ฉ์— ๋Œ€ํ•ด์„œ ๊ฐ๊ฐ 20๋ฒˆ์”ฉ, ์ด 100๋ฒˆ์˜ ๋น„๊ต๋ฅผ ์ง„ํ–‰ํ•œ ๊ฒฐ๊ณผ์ž…๋‹ˆ๋‹ค.)

 

ํ•ด๋‹น ๊ธ€์€
Yoon Sung๋‹˜์˜ 'Mysql Like ๋™์ž‘ ๋ฐฉ์‹',
MySQL ๊ณต์‹๋ฌธ์„œ '8.3.9 Comparision of B-Tree and Hash Indexes',
'Turbo-BM algorithm',
yeomyaloo๋‹˜์˜ '์‡ผํ•‘๋ชฐ ๋งŒ๋“ค๊ธฐ ํ”„๋กœ์ ํŠธ - ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(elasticsearch)์™€ ์Šคํ”„๋ง๋ถ€ํŠธ ์—ฐ๋™ํ•ด๋ณด์ž',
์˜๋‹ˆ๋‹˜์˜ '[spring boot] ์Šคํ”„๋ง๋ถ€ํŠธ์—์„œ elasticsearch ์‹œ์ž‘ํ•˜๊ธฐ',
msjeong97๋‹˜์˜ 'Elasticsearch๋ž€',
justdoIT0703๋‹˜์˜ '[Elastic Search] ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๋ž€? 2. ์—ญ ์ƒ‰์ธ(Inverted Index)',
์ œ์ด์˜จ(Jayon)๋‹˜์˜ '[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] ์—ญ์ƒ‰์ธ์ด๋ž€?',
์„ ์ฐธ๊ณ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

 

'๐Ÿ“‚ ํ›„๊ธฐ > 2023๋…„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ ํ›„๊ธฐ  (2) 2023.12.07
ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming) ํ›„๊ธฐ  (0) 2023.05.28
  • ๐Ÿ“™ 1. ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜(Elasticsearch)๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ ๊ณ„๊ธฐ
  • ๐Ÿ“™ 2. ES ๊ฐœ๋… & ํŠน์ง•
  • ๐Ÿ“™ 3. ์ ์šฉ
  • ๐Ÿ“™ 4. ๊ฒฐ๊ณผ
'๐Ÿ“‚ ํ›„๊ธฐ/2023๋…„' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ํ…Œ์ŠคํŠธ ์ปค๋ฒ„๋ฆฌ์ง€ 100% ๋‹ฌ์„ฑ ํ›„๊ธฐ
  • ํŽ˜์–ดํ”„๋กœ๊ทธ๋ž˜๋ฐ(Pair Programming) ํ›„๊ธฐ
Amenable
Amenable
CS, ์ž๋ฐ”, ์ž๋ฃŒ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜, ์Šคํ”„๋ง, ์Šคํ”„๋ง ๋ถ€ํŠธ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์— ๊ด€ํ•œ ๋‚ด์šฉ์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”

๋‹จ์ถ•ํ‚ค

๋‚ด ๋ธ”๋กœ๊ทธ

๋‚ด ๋ธ”๋กœ๊ทธ - ๊ด€๋ฆฌ์ž ํ™ˆ ์ „ํ™˜
Q
Q
์ƒˆ ๊ธ€ ์“ฐ๊ธฐ
W
W

๋ธ”๋กœ๊ทธ ๊ฒŒ์‹œ๊ธ€

๊ธ€ ์ˆ˜์ • (๊ถŒํ•œ ์žˆ๋Š” ๊ฒฝ์šฐ)
E
E
๋Œ“๊ธ€ ์˜์—ญ์œผ๋กœ ์ด๋™
C
C

๋ชจ๋“  ์˜์—ญ

์ด ํŽ˜์ด์ง€์˜ URL ๋ณต์‚ฌ
S
S
๋งจ ์œ„๋กœ ์ด๋™
T
T
ํ‹ฐ์Šคํ† ๋ฆฌ ํ™ˆ ์ด๋™
H
H
๋‹จ์ถ•ํ‚ค ์•ˆ๋‚ด
Shift + /
โ‡ง + /

* ๋‹จ์ถ•ํ‚ค๋Š” ํ•œ๊ธ€/์˜๋ฌธ ๋Œ€์†Œ๋ฌธ์ž๋กœ ์ด์šฉ ๊ฐ€๋Šฅํ•˜๋ฉฐ, ํ‹ฐ์Šคํ† ๋ฆฌ ๊ธฐ๋ณธ ๋„๋ฉ”์ธ์—์„œ๋งŒ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค.