์กฐ์ฌ ๊ณ๊ธฐ
- ์ฌ๋ด ํ ํ๋ก์ ํธ์ ์๊ฑด ์ค ํํ์ ๋ถ์์ด ์ ์ฉ๋ ๊ฒ์ ๊ธฐ๋ฅ์ด ํ์ํ์ฌ, ๊ตฌํ ๊ธฐ์ ๋ก ํ์ฉํ๊ธฐ ์ํด ์กฐ์ฌ
Elastic Search๋
- = ๊ฒ์ ๋ฐ ๋ถ์ ์์ง (Apache Lucene ์ ๊ธฐ๋ฐํจ)
- Apache Lucene
- = ์ญ์์ธ ๊ตฌ์กฐ ๊ธฐ๋ฐ์ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ using Java (์ค๋๋ ๋ชจ๋ ๊ฒ์์์ง์ ์์ด)
ํน์ง
- ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ํตํด ์ค์๊ฐ์ฑ์ผ๋ก ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅ
- NoSQL์ ์ผ์ข
์ผ๋ก ๋ถ๋ฅํ ์ ์์
- ๊ฒ์์์ง์ด์ง๋ง ๋์ฉ๋ ์คํ ๋ฆฌ์ง๋ก๋ ํ์ฉ์ด ๊ฐ๋ฅํ๋ค (like MongoDB, Hbase)
๋ผ์ด์ผ์ค: ELv2(Elastic License 2)๋ก ์ฌ์ฉ ๊ฐ๋ฅ
์ฅ๋จ์
- ์ฅ์
- ์คํ์์ค ๊ฒ์์์ง (์ปค๋ฎค๋ํฐ ํ๋ฐ, ๋์์๋ ๊ฐ์ )
- ์ ๋ฌธ๊ฒ์ - ๋ด์ฉ์ ์ฒด๋ฅผ ์์ธํด์ ํน์ ๋จ์ด๊ฐ ํฌํจ๋ ๋ฌธ์๋ฅผ ๊ฒ์ํ ์ ์์
- ๊ธฐ๋ฅ/์ธ์ด ๋ณ ํ๋ฌ๊ทธ์ธ ์ ์ฉ ๊ฐ๋ฅ
- Kibana์ ์ฐ๊ณํด ํต๊ณ๋ถ์์ ํ์ฉ๊ฐ๋ฅ
- ์ ํํ๋์ง ์์ ๋ฌธ์๋ ์๋์ผ๋ก ์์ธํ๊ณ ๊ฒ์ํ ์ ์์
- Restful API์ ๊ธฐ๋ฐํ์ฌ ๊ฐ๋ฐ์ธ์ด, ์ด์์ฒด์ , ์์คํ
์ ๋
๋ฆฝ์ ์ผ๋ก ๋ค์ํ ํ๋ซํผ์์ ํ์ฉ ๊ฐ๋ฅ
- ๋ถ์ฐ๊ตฌ์ฑ์ด ๊ฐ๋ฅํจ (๋ถ์ฐํ๊ฒฝ์์์ ๋ฐ์ดํฐ ๋จ์: shard)
- ๋จ์
- Transaction Rollback ๋ฏธ์ง์
- ์์ธ๋ ๋ฐ์ดํฐ๋ 1์ด ๋ค์๋ ๊ฒ์ ๊ฐ๋ฅ (์์ ํ ์ค์๊ฐ์ฑ์ ๋ณด์ฅํ์ง๋ ๋ชปํจ)
- ๋ฐ์ดํฐ์ ์
๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ์ง ์์ (์
๋ฐ์ดํธ ์ ์ค์ง์ ์ผ๋ก ์ญ์ ํ ์ฌ์์ฑ ๋จ)
- ๋น์ฉ์ ๋ง์ด ๋๋, ๋ถ๋ณ์ฑ์ด๋ผ๋ ์ด์ ์ ์ทจํจ
์๋
- JSON document ํ์์ ๋ฐ์ดํฐ๋ฅผ API๋ฅผ ์ฌ์ฉํด Elastic Search๋ก ์ ์กํ ์ ์์
- ES๋ document๋ฅผ ์ ์ฅํ๊ณ ํด๋ฌ์คํฐ์ ์ธ๋ฑ์ค์ ๋ฌธ์์ ๋ํ ๊ฒ์ ๊ฐ๋ฅํ ์ฐธ์กฐ๋ฅผ ์ถ๊ฐ
- ES API(Rest API๋ก ์ ๊ณต)๋ฅผ ์ฌ์ฉํด์ ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ณ ์กฐํํ ์ ์์ (์ฟผ๋ฆฌ ๋์ api ๋ฅผ ์ฌ์ฉ)
- ์๊ฐํ ๋๊ตฌ์ธ Kibana๋ฅผ ํจ๊ป ์ฌ์ฉํด ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ ๋์๋ณด๋๋ฅผ ๊ตฌ์ถํ ์ ์์
- ES HTTP Method vs RDBMS SQL

๊ธฐ๋ณธ ์ฉ์ด
- ES์ RDBMS

- ์ฉ์ด ์ ๋ฆฌ
- Index: ๋ฐ์ดํฐ ์ ์ฅ ๊ณต๊ฐ
- ๋
ธ๋์ ์ธ๋ฑ์ค๋ M:N
- ํ๋์ ๋ฌผ๋ฆฌ๋
ธ๋์ ์ฌ๋ฌ๊ฐ ๋
ผ๋ฆฌ ์ธ๋ฑ์ค ์์ฑ ๊ฐ๋ฅ
- ์ฌ๋ฌ ๋ฌผ๋ฆฌ๋
ธ๋์ ํ๋์ ์ธ๋ฑ์ค๊ฐ ๋ถ์ฐ์ ์ฅ ๊ฐ๋ฅ
- Shard: ์์ธ๋ ๋ฌธ์๋ ํ๋์ ์ธ๋ฑ์ค์ ์ ์ฅ๋๊ณ , ์ธ๋ฑ์ค ๋ด๋ถ์ ์์ธ๋ ๋ฐ์ดํฐ๋ ์ฌ๋ฌ๊ฐ์ ํํฐ์
(=์ค๋) ๋ก ๋๋์ด ์ ์ฅ๋จ
- Type: ์ธ๋ฑ์ค์ ๋
ผ๋ฆฌ์ ๊ตฌ์กฐ ๋จ์ (like Table)
- version 6.1๋ถํฐ ์ธ๋ฑ์ค ๋น ํ๋์ ํ์
๋ง ์ค์ ๊ฐ๋ฅ
- Document: ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์ต์ ๋จ์ (like Row). JSON ํฌ๋งท์ผ๋ก ์ ์ฅ
- Field: ๋ฌธ์๋ฅผ ๊ตฌ์ฑํ๊ธฐ ์ํ ์์ฑ (like column). ํ๋์ ํ๋๋ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ค์์ ๋ฐ์ดํฐํ์
์ ๊ฐ์ง ์ ์์
- Mapping: ๋ฌธ์์ ํ๋, ํ๋ ์์ฑ์ ์ ์ํ๊ณ ๊ทธ์ ๋ฐ๋ฅธ ์์ธ ๋ฐฉ๋ฒ์ ์ ์ํจ (like schema)
๊ตฌ์ฑ
Node Types
- ๋
ธ๋๋ค์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํจ
- Master Node: ํด๋ฌ์คํฐ ๊ด๋ฆฌ, ๋
ธ๋ ์ถ๊ฐ/์ ๊ฑฐ ๊ด๋ฆฌ
- Data Node: ์ค์ง์ ์ธ ๋ฐ์ดํฐ ์ ์ฅ.
- ๋ฐ์ดํฐ๊ฐ ์ค์ ๋ก ๋ถ์ฐ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ๊ณต๊ฐ์ธ ์ค๋๊ฐ ๋ฐฐ์น๋จ
- ๊ฒ์๊ณผ ํต๊ณ ๋ฑ ๋ฐ์ดํฐ ๊ด๋ จ ์์
์ํ
- Coordinating Node
- ์ฌ์ฉ์์ ์์ฒญ๋ง ๋ฐ์์ ๋ถ๋ฐฐ
- ํด๋ฌ์คํฐ ๊ด๋ จ ์์ฒญ์ ๋ง์คํฐ๋
ธ๋, ๋ฐ์ดํฐ ๊ด๋ จ ์์ฒญ์ ๋ฐ์ดํฐ๋
ธ๋๋ก ์ ๋ฌ
- Ingest Node
- ๋ฌธ์์ ์ ์ฒ๋ฆฌ ๋ด๋น
- ์ธ๋ฑ์ค ์์ฑ ์ ๋ฌธ์์ ํ์์ ๋ค์ํ๊ฒ ๋ณ๊ฒฝํ ์ ์์
Cluster, Node, Shard
-
ํด๋ฌ์คํฐ: 1๊ฐ ์ด์์ ๋
ธ๋๋ก ์ด๋ฃจ์ด์ง ES์ ๊ธฐ๋ณธ ๋จ์
- ํ๋์ ES ํด๋ฌ์คํฐ๋ ์ธ๋ฑ์ค์ ๋ฌธ์ ์กฐํ ์์ฒญ์ ๋ฐ์ผ๋ฉด, ๋ง์คํฐ๋
ธ๋๋ฅผ ํตํด ํ์ํ ๋ฐ์ดํฐ ๋
ธ๋์์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ์กฐํํ ๋ค, ๋ฐ์ดํฐ๋ฅผ ์ทจํฉํ์ฌ ํ๋์ ๊ฒฐ๊ณผ๋ก ์ ๊ณตํ๋ค.
- ์ฌ๋ฌ ๊ฐ์ ํด๋ฌ์คํฐ๋ฅผ ์ฐ๊ฒฐํด์ ๊ตฌ์ฑํ๋ ๊ฒ๋ ๊ฐ๋ฅํจ.
- ํด๋ฌ์คํฐ ๋ด ๋
ธ๋๋ ์ค์๊ฐ ์ถ๊ฐ, ์ ๊ฑฐ๊ฐ ๊ฐ๋ฅํจ.
-
์ธ๋ฑ์ค๋ง๋ค ์ค๋๋ก ๋๋์ด์ง๊ณ , ๊ฐ ์ค๋ ๋ณ๋ก ๋ ํด๋ฆฌ์นด๊ฐ ์์ฑ๋๋ค.
References
https://aws.amazon.com/ko/what-is/elasticsearch/
https://jaemunbro.medium.com/elastic-search-๊ธฐ์ด-์คํฐ๋-ff01870094f0