ElasticSearch, ์ ๋๋ก ํ์ฉํ๊ณ ์ถ๋ค๋ฉด?
์๋ฆฌ + ๋ชจ๋ํฐ๋ง + ํธ๋ฌ๋ธ์ํ
์ ํ๋ฒ์!
ElasticSearch ํด๋ฌ์คํฐ
ํ์
์ ์ํ ํต์ฌ ๋
ธํ์ฐ.
์คํ์์ค ๋ถ์ฐ ๊ฒ์ ์์ง, Elasticsearch
RPM์ ์ด์ฉํ ์ฌ์ด ์ค์น์ Rest API ๊ธฐ๋ฐ์ ์ฌ์ฉ๋ฒ์ ๊ธฐ๋ฐ์ผ๋ก ElasticSearch๋ ๊ธ์ธ ์ธ์ง๋ ๋์ ์คํ ์์ค ๊ณ์ด์ ํฉ๋ฅํ์ต๋๋ค. ํนํ ์ฟ ๋ฒ๋คํฐ์ค ๊ธฐ๋ฐ ์ปจํ
์ด๋ ํ๊ฒฝ์ผ๋ก์ ์ ํ์ด ๊ฐ์ํ ๋๋ฉด์ ๋น ๋ฅด๊ณ ์์ ์ ์ผ๋ก ๋ก๊ทธ๋ฅผ ์์งํ๊ณ ์กฐํํ ์ ์๋ ์์คํ
์ด ํ์ํด์ก๊ณ , ElasticSearch๊ฐ ์ข์ ๋์์ผ๋ก ํจ๊ป ๊ฐ๊ด๋ฐ๊ธฐ ์์ํ์ต๋๋ค.
๋๊ตฌ๋ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์์ํ ์ ์๋ค๋ ์ฅ์ ๋๋ฌธ์ ElasticSearch ๊ธฐ๋ฐ์ผ๋ก ๋ก๊ทธ ์์ง ์์คํ
์ ๊ตฌ์ถํด์ ์ด์ํ๋ ์๋น์ค๊ฐ ๋ง์ด ์์ต๋๋ค. ํ์ง๋ง, ์ฝ๊ณ ๋น ๋ฅด๊ฒ ์์ํ ๋งํผ ์๋น์ค๊ฐ ์ผ์ ๊ท๋ชจ ์ด์์ผ๋ก ์ปค์ง๊ฒ ๋๋ฉด ๋ฏธ์ฒ ์๊ฐํ์ง ๋ชปํ ๋ค์ํ ์ด์๋ค์ด ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
ElasticSearch๋ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ถํ ์ ์์ต๋๋ค. ๋๋ฌธ์ ์ฉ๋์ ๋ง๊ฒ ์ฌ๋ฐ๋ฅด๊ฒ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ถํ๋ค๋ฉด ์ํ๋ ๋งํผ์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค ์ ์์ผ๋ฉฐ, ๋
ธ๋ ํ๋ ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์ค์ ์ํฅ์ด ์์ ๋งํผ ์์ ์ ์ผ๋ก ์ด์ํ ์ ์์ต๋๋ค. ์ด๋ ๊ฒ ElasticSearch๋ฅผ ํด๋ฌ์คํฐ๋ก ๊ตฌ์ถํ๊ธฐ ์ํด์๋ ๊ทธ ๊ธฐ๋ฐ์ด ๋๋ ๊ฐ๋
๊ณผ ๊ธฐ์ ์ ์ ์์์ผ ํฉ๋๋ค.
์ฐ๋ฆฌ์ ๋ชฉํ๋ ElasticSearch์ โํต์ฌ ๋์โ์ ํ์
ํ๋ ๊ฒ์
๋๋ค.
ElasticSearch๋ ๋น ๋ฅด๊ฒ ๋ฐ์ ํ๊ณ ์์ผ๋ฉฐ ๋ฒ์ ์
๊ทธ๋ ์ด๋ ์ฃผ๊ธฐ ์ญ์ ๊ทธ๋งํผ ๋น ๋ฆ
๋๋ค. ํ์ง๋ง ๋ฒ์ ์ด ์
๊ทธ๋ ์ด๋๋๋๋ผ๋ ๋ณํ์ง ์๋ ๋ด๋ถ ๋์๋ค์ด ์์ต๋๋ค. ์์ ์ ์ธ ์ด์์ ์ํด์๋ ๋ฐ๋ก ์ด๋ฐ ๋ด๋ถ ๋์์ ๋ํ ์ดํด๊ฐ ํ์์ ์
๋๋ค. ํนํ ์์ธ๊ณผ ๊ฒ์์ด ์ด๋ป๊ฒ ์ด๋ฃจ์ด์ง๋์ง, ์ค๋์ ๊ฐ์๋ฅผ ์ ์ ํ๊ฒ ์ค์ ํ๋ ๊ฒ์ด ์ ์ค์ํ์ง์ ๋ํด ์ดํดํ๊ณ ์์ด์ผ ํด๋ฌ์คํฐ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฑฐ๋ ์ฑ๋ฅ ๋ถ์กฑ ํ์์ด ๋ฐ์ํ ๋ ์ ์ ํ๊ฒ ๋์ฒํ ์ ์์ต๋๋ค.
๊ทธ๋์ ์ด ๊ฐ์์์๋ ElasticSearch ํน์ ๋ฒ์ ์ ๋ค๋ฃจ์ง ์์ต๋๋ค. ๊ทธ ๋์ ๋ชจ๋ ๋ฒ์ ์ ํตํ์ด ๋์ผํ๊ฒ ์ ์ฉ๋๋ ํต์ฌ ๋์์ ์ค๋ช
ํ๊ณ , ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๊ธฐ ์ํด ํ์ํ ๋ชจ๋ํฐ๋ง ๋ฐฉ๋ฒ ๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผ ํ๋์ง ๋ฑ์ ์ฌ๋ก๋ฅผ ํตํด ์ดํด๋ด
๋๋ค. ์ด๋ค ๋ฒ์ ์ ElasticSearch๋ฅผ ์ด์ํ๊ณ ์๋๋ผ๋ ์ ์ฉํ๊ณ , ์์ฉํ ์ ์๋ ๋ด๋ถ ์๋ฆฌ๋ฅผ ํํํ๊ฒ ๋ค์ ธ๋ณด์๊ธฐ ๋ฐ๋๋๋ค.
์ค๋ฌด ElasticSearch ํ์ฉ์ ๋ํ
๊ทผ๋ณธ์ ์ธ ๊ณ ๋ฏผ์ ํด๊ฒฐํฉ๋๋ค.
์ด๋ฐ ๊ณ ๋ฏผ ์์๋ค๋ฉด ์ฃผ๋ชฉํด์ฃผ์ธ์!

ElasticSearch ํด๋ฌ์คํฐ๋ฅผ ์ด๋ฏธ ๊ตฌ์ถํด์ ์ฌ์ฉํ๊ณ ์์ผ์ ๋ถ

ElasticSearch ํด๋ฌ์คํฐ์ ์ฆ์ ์ฅ์ ๋ก ์๋น์ค ์์ ์ฑ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ๊ณ์ ๋ถ

ElasticSearch๋ฅผ ํ๋ก์ ํธ ๋๋ ์๋น์ค์ ๋์
ํ๋ ค๊ณ ๊ณ ๋ฏผํ๊ณ ๊ณ์ ๋ถ
๐ฌ โElasticSearch๋ฅผ ์์ ์ ์ผ๋ก ์ด์ํ๊ณ ์ถ์๋ฐ ElasticSearch์ ๋ํ ๊ธฐ๋ฐ ์ง์์ด ๋ถ์กฑํด์.โ
ElasticSearch์ ์์ธ ๋ฐ ๊ฒ์์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์์์ผ ์ ์ค๋์ ๊ฐ์๊ฐ ์ค์ํ์ง๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ์ด๋ฐ ์ด์์ ํ์ํ ๊ธฐ๋ฐ ์ง์๋ค์ ์๋ ค ๋๋ฆฝ๋๋ค.
๐ฌ โElasticSearch ํด๋ฌ์คํฐ์์ ์๊พธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ, ์์ธ ํ์
์ด ์ด๋ ต๊ณ ๋์ฒํ๊ธฐ ํ๋ค์ด์.โ
๋ด๋ถ ๋์ ์๋ฆฌ๋ฅผ ์๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋ ์ด๋์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋์ง ์์ธ์ ์ฐพ์๋ด๊ธฐ ์ฌ์์ง๋๋ค. ์ด ๊ฐ์๋ฅผ ํตํด์ ํธ๋ฌ๋ธ ์ํ
์ ํ ์ ์๋ ๊ธฐ๋ณธ ์ง์๋ค์ ์ต๋ํ ์ ์์ต๋๋ค.
ElasticSearch Essential
ํต์ฌ์ ์ก๋ 4-Step
Step #1
ElasticSearch์ ๋ํด ์ดํด๋ด
๋๋ค.
ElasticSearch์ ์ ๋ฐ์ ์ธ ํน์ง๊ณผ ์ด์์ ์ํด ํ์ํ ํ์ ๊ฐ๋
๋ค์ ์ดํด๋ด
๋๋ค. ํด๋ฌ์คํฐ๋ ๋ฌด์์ธ์ง, ๋
ธ๋๋ ๋ฌด์์ธ์ง ๊ทธ๋ฆฌ๊ณ ํด๋ฌ์คํฐ๋ก์ ๊ฐ์ง๋ ElasticSearch์ ํน์ง ๋ฑ์ ์ดํด๋ณด๊ณ , ์ธ๋ฑ์ค, ์ค๋, ๋งคํ ๋ฑ๊ณผ ๊ฐ์ ๊ธฐ๋ณธ ๊ฐ๋
๋ค์ ๋ํด์ ๋ฐฐ์ฐ๊ฒ ๋ฉ๋๋ค.
โ
ElasticSearch ์ด์์ ์ํด ์์์ผ ํ ํ์ ๊ฐ๋
๋ค์ ์ดํดํ ์ ์์ต๋๋ค.

Step #2
ElasticSearch์ ๋ด๋ถ ๋์์ ์ดํดํฉ๋๋ค.
ElasticSearch ๋ด๋ถ์์ ์์ธ/๊ฒ์์ด ์ด๋ป๊ฒ ์ฒ๋ฆฌ๋๋์ง, ์ค๋์ ๊ฐ์๊ฐ ์ ์ค์ํ์ง ์ดํด๋ณด๊ณ ์ฃผ์ํด์ผ ํ ๊ฒ๋ค์ ๋ํด์ ์์๋ด
๋๋ค. text์ keyword ํ์
ํ๋์ ์ฐจ์ด์ ์ ์ดํดํ๊ณ ์ธ์ ์ด๋ป๊ฒ ํ์ฉํ๋ฉด ์ข์์ง ์ตํ ์ ์์ต๋๋ค.
โ
ElasticSearch ๋ด๋ถ์์ ์์ธ๊ณผ ๊ฒ์์ด ์ด๋ป๊ฒ ๋์ํ๋์ง ์ดํดํ ์ ์์ต๋๋ค.

Step #3
ElasticSearch๋ฅผ ๋ชจ๋ํฐ๋งํ๋ ๋ฐฉ์์ ํ์ตํฉ๋๋ค.
ElasticSearch๋ CAT API๋ฅผ ํตํด ๋ค์ํ ์ ๋ณด๋ฅผ ๋ณผ ์ ์๋ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. CAT API ์ค ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ CAT health, nodes, indices, shards ๋ฑ์ ๋ํด ์ดํด ๋ณด๊ณ ๊ฐ๊ฐ์ ์ธ์ ํ์ฉํ๋ฉด ์ข์์ง ํ์ตํฉ๋๋ค. ElasticSearch ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ ๋ ์ด๋ค ์งํ๋ค์ ์ดํด๋ด์ผ ํ๋์ง, ๊ทธ๋ฆฌ๊ณ ๊ทธ ์งํ๋ค์ด ์๋ฏธํ๋ ๊ฒ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค.
โ
ElasticSearch ํด๋ฌ์คํฐ๋ฅผ ๋ชจ๋ํฐ๋งํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๊ณ , ์ฃผ์ ๋ชจ๋ํฐ๋ง ์งํ๋ค์ด ์๋ฏธํ๋ ๋ฐ๊ฐ ๋ฌด์์ธ์ง ์ดํดํ ์ ์์ต๋๋ค.

Step #4
ElasticSearch ํด๋ฌ์คํฐ์์ ๋ฐ์ํ๋ ์ฅ์ ์ฌ๋ก์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์ต๋๋ค.
ElasticSearch ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๋ค ๋ณด๋ฉด ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ์ด ์ค ๊ฐ์ฅ ๋น๋ฒํ๊ฒ ๋ฐ์ํ๋ ์ฅ์ ์ํฉ๋ค์ ์ฌ๋ก๋ณ๋ก ์ดํด๋ณด๋ฉฐ, ์ฅ์ ์์ธ์ ํ์
ํ๊ณ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ณผ์ ์ ํตํด ElasticSearch ํด๋ฌ์คํฐ์ ํธ๋ฌ๋ธ ์ํ
๊ณผ์ ์ ํ์ตํฉ๋๋ค.
โ
ElasticSearch ํด๋ฌ์คํฐ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ฅผ ์ฐพ์๋ด๊ณ ํด๊ฒฐํ ์ ์์ต๋๋ค.

ํ์
์์ ๊ฒฝํํ ElasticSearch ๋
ธํ์ฐ๋ฅผ ์ ํฉ๋๋ค.
์นด์นด์ค์์ 3๋
์ด์ ElasticSearch ํด๋ฌ์คํฐ ๊ตฌ์ถ ๋ฐ ์ด์ ์
๋ฌด๋ฅผ ์งํํ์์ผ๋ฉฐ, ์ฑ
ใ๊ธฐ์ด๋ถํฐ ๋ค์ง๋ ElasticSearch ์ด์ ๋
ธํ์ฐใ๋ฅผ ์งํํ์ต๋๋ค.
ํ์ฌ๋ ๋น๊ทผ๋ง์ผ์์ SRE๋ก ์ผํ๋ฉฐ ๋ธ๋ฐ์น ๋ฐ ํฐ์คํ ๋ฆฌ๋ฅผ ํตํด ๋ค์ํ ์ง์์ ๊ณต์ ํ๊ณ ์์ผ๋ฉฐ, ElasticSearch์ ๊ด๋ จ๋ ์คํ ์์ค๋ฅผ ๋ง๋ค๊ธฐ๋ ํฉ๋๋ค.
์ด ๊ฐ์๋ฅผ ํตํด ๋ง์ ๋ถ๋ค์ด ElasticSearch๋ฅผ ์ด์ฉํ๋ ๋ฐ ๋์์ ๋๋ฆด ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค ๐
Q&A ๐ฌ
Q. ElasticSearch๋ฅผ ์ ํ ๋ชฐ๋ผ๋ ๋ค์ ์ ์๋์?
์๋๋๋ค. ๋ณธ ๊ฐ์์์๋ ElasticSearch๋ฅผ ๊ตฌ์ถํ๋ ๊ณผ์ ์ ๋ค๋ฃจ์ง ์๊ธฐ ๋๋ฌธ์ ๊ธฐ๋ณธ์ ์ธ ์์ค์ ๊ฒฝํ์ ํ์๋ก ํฉ๋๋ค.
Q. ElasticSearch ํด๋ฌ์คํฐ์ ๋ํ ์ด์ ๊ฒฝํ์ ์ด๋ ์ ๋๋ก ๊ฐ์ง๊ณ ์์ด์ผ ํ๋์?
ํฐ ๊ท๋ชจ๊ฐ ์๋๋๋ผ๋, ๊ธฐ๋ณธ์ ์ธ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๊ณ ๋ฌธ์๋ฅผ ์์ธํด ๋ณธ ๊ฒฝํ ์ ๋๋ง ์์ด๋ ์ถฉ๋ถํฉ๋๋ค.