๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Elasticsearch

(2)
๊ฒ€์ƒ‰ ์š”๊ตฌ ์‚ฌํ•ญ์„ ์œ„ํ•œ Elasticsearch ์ธ๋ฑ์Šค & Query DSL ์„ค๊ณ„๊ธฐ ์‚ฌ๋‚ด ์‹ค์Šต์œผ๋กœ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ฐ˜์˜ํ•ด Elasticsearch์˜ ์ธ๋ฑ์Šค ์„ค์ •๊ณผ ๋งคํ•‘์„ ์ •์˜ํ•˜๊ณ , ๊ฒ€์ƒ‰์„ ์œ„ํ•œ Query DSL(JSON ๊ธฐ๋ฐ˜ ์ฟผ๋ฆฌ ์–ธ์–ด, Not JPA QueryDSL)์„ ์ž‘์„ฑํ•˜๋ฉด์„œ ๊ณ ๋ฏผํ–ˆ๋˜ ์ ๋“ค์„ ์ •๋ฆฌํ•œ ๊ธ€์ž…๋‹ˆ๋‹ค. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ VirtualBox (Rocky Linux)Elasticsearch 7.10.2ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ์— ๋…ธ๋“œ 3๊ฐœ ๊ตฌ์„ฑ API ์š”์ฒญ/์‘๋‹ต ๋„๊ตฌ Kibana / Postman1. ๋ช…์‚ฌ๊ตฌ๊ฐ€ ์ผ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ ๊ฒ€์ƒ‰์ด ๋” ์ž˜๋˜๊ฒŒ ํ•ด์ฃผ์„ธ์š”.์ด๋ฅผ ์œ„ํ•ด mulit_match ์˜ phrase ํƒ€์ž…์„ ํ™œ์šฉํ–ˆ๋‹ค. multi_match๋Š” type์— ๋”ฐ๋ผ ์ฟผ๋ฆฌ ์‹คํ–‰ ๋ฐฉ๋ฒ•์ด ๋‹ฌ๋ผ์ง„๋‹ค. multi_match ์ฟผ๋ฆฌ์˜ type๋ณ„ ๋™์ž‘ - best_fields (๊ธฐ๋ณธ๊ฐ’)์—ฌ๋Ÿฌ ํ•„๋“œ ์ค‘ ํ•˜๋‚˜์—์„œ ๊ฒ€์ƒ‰..
Elasticsearch๊ฐ€ Apache Lucene ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ refresh/flush API๋ฅผ ํ†ตํ•ด ์•Œ์•„๋ณด๊ธฐ ๋ชฉํ‘œ: ์—˜๋ผ์Šคํ‹ฑ์„œ์น˜๊ฐ€ ์•„ํŒŒ์น˜ ๋ฃจ์”ฌ์„ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋Š”์ง€ ์•Œ์•„๋ณด๊ธฐ Elasticsearch์™€ Apache Lucene์˜ ๊ด€๊ณ„ Apache Lucene์€ ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ์˜คํ”ˆ์†Œ์Šค Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ, ๊ฐ•๋ ฅํ•œ ํ…์ŠคํŠธ ๊ฒ€์ƒ‰ ์—”์ง„์ž…๋‹ˆ๋‹ค.(https://lucene.apache.org/)๋ฐ˜๋ฉด, Elasticsearch๋Š” Lucene์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ถ„์‚ฐํ˜• ๊ฒ€์ƒ‰ ์—”์ง„์œผ๋กœ, Lucene์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ์‚ฌ์šฉ์ž๋“ค์ด ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด JSON ๊ธฐ๋ฐ˜์˜ RESTful HTTP API๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, GET์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ณ , POST/PUT์œผ๋กœ ๋ฌธ์„œ๋ฅผ ์ƒ‰์ธํ•˜๋ฉฐ, DELETE๋กœ ๋ฌธ์„œ๋ฅผ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์™ธ์—๋„ Elasticsearch๋Š” ๊ณ ..