0๏ธโฃ Elasticsearch๋?
ES๋ ์ด๋ค ์ญํ ์ผ๊น?
Elasticsearch๋ ํ์ฅ์ฑ์ด ๋ฐ์ด๋ ์คํ์์ค ํํ
์คํธ ๊ฒ์ ๋ฐ ๋ถ์ ์์ง์ด๋ค.
๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ํ๊ฒ, ๊ฑฐ์ ์ค์๊ฐ(์ค์ค์๊ฐ)์ผ๋ก ์ ์ฅ, ๊ฒ์, ๋ถ์ํ ์ ์๋๋ก ์ง์ํ๋ค.
์ผ๋ฐ์ ์ผ๋ก ๋ณต์กํ ๊ฒ์ ๊ธฐ๋ฅ ๋ฐ ์๊ตฌ ์ฌํญ์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ํ ๊ธฐ๋ณธ ์์ง/๊ธฐ์ ๋ก ์ฌ์ฉ๋๋ค.
Elasticsearch๋ NRT ๊ฒ์ ํ๋ซํผ์ด๋ค.
๋ฌธ์๋ฅผ ์์ธํํ๋ ์์ ๋ถํฐ ๋ฌธ์๊ฐ ๊ฒ์ ๊ฐ๋ฅํด์ง๋ ์์ ๊น์ง ์ฝ๊ฐ์ ๋๊ธฐ ์๊ฐ(๋๊ฐ 1์ด)์ด ์๋ค.
*NRT(Near Realtime): ์ค์ค์๊ฐ
์ ES๋ฅผ ์ฌ์ฉํ ๊น?
๋น ๋ฅด๋ค.
Elasticsearch๋ Lucene(๋ฃจ์ฌ)์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌ์ถ๋๊ธฐ ๋๋ฌธ์, ํํ
์คํธ ๊ฒ์์ ๋ฐ์ด๋๋ค.
๋ํ ๊ฑฐ์ ์ค์๊ฐ ๊ฒ์ ํ๋ซํผ์ผ๋ก, ๋ฌธ์๊ฐ ์์ธ๋ ๋๋ถํฐ ๊ฒ์ ๊ฐ๋ฅํด์ง ๋๊น์ง ๋๊ธฐ ์๊ฐ์ด ๋ณดํต 1์ด ์ ๋๋ก ์์ฃผ ์งง๋ค.
๋ณด์ ๋ถ์, ์ธํ๋ผ ๋ชจ๋ํฐ๋ง์ฒ๋ผ ์๊ฐ์ด ์ค์ํ ์ฌ์ฉ ์ฌ๋ก์ ์ด์์ ์ด๋ค.
*Lucene(๋ฃจ์ฌ): Apache ์์ ๊ฐ๋ฐ๋ ์๋ฐ ๊ธฐ๋ฐ์ ๊ฒ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ํ
์คํธ ๊ฒ์ ๋ฑ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ ๋๊ตฌ
๋ถ์ฐ์ ์ด๋ค.
Elasticsearch์ ์ ์ฅ๋ ๋ฌธ์๋ ์ค๋๋ผ๊ณ ํ๋ ์ฌ๋ฌ ๋ค๋ฅธ ์ปจํ
์ด๋์ ๊ฑธ์ณ ๋ถ์ฐ๋๋ค.
์ด ์ค๋๋ ๋ณต์ ๋์ด ํ๋์จ์ด ์ฅ์ ์, ์ค๋ณต๋๋ ๋ฐ์ดํฐ ์ฌ๋ณธ์ ์ ๊ณตํ๋ค.
๋ถ์์ ์ธ ํน์ง์ ์๋ฐฑ ๊ฐ(ํน์ ์์ฒ ๊ฐ)์ ์๋ฒ๊น์ง ํ์ฅํ๊ณ ํํ๋ฐ์ดํธ์ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ ์ ์๊ฒ ํด์ค๋ค.
*์ค๋(shard): 2๋ฒ์์ ์ค๋ช
.
๊ธฐ๋ฅ์ด ๋ง๋ค.
์๋, ํ์ฅ์ฑ, ๋ณต์๋ ฅ๋ฟ ์๋๋ผ, Elasticsearch์๋ ๋ฐ์ดํฐ ๋กค์
, ์ธ๋ฑ์ค ์๋ช
์ฃผ๊ธฐ ๊ด๋ฆฌ ๋ฑ๊ณผ ๊ฐ์ด ๋ฐ์ดํฐ๋ฅผ ํจ์ฌ ๋ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ฒ์ํ ์ ์๊ฒ ํด์ฃผ๋ ๊ฐ๋ ฅํ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ด ๋ค์ ํ์ฌ๋์ด ์๋ค.
๋ค๋ฅธ ๋๊ตฌ์์ ์ฐ๊ณ์ฑ
์ฃผ๋ก ELK(Elasticsearch, Logstash, Kibana)์ ์ฝ์ด๋ก ๋ฐ์ดํฐ ์์ง ๋ฐ ์ ์ฅ, ๋ถ์ ๋ฐ ์๊ฐํ๋ฅผ ์ํ ์คํ ์์ค ๋๊ตฌ์ ์กฐํฉ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ค.
*Logstash(๋ก๊ทธ์คํ์): ๋ก๊ทธ, ์ด๋ฒคํธ, ๋ฉํธ๋ฆญ ๋ฑ ๋ค์ํ ์ ํ์ ๋ฐ์ดํฐ๋ฅผ ์ค์ ์ง์คํํ๊ณ ์ฒ๋ฆฌํ์ฌ Elasticsearch์ ์ ๋ฌํ๋ ๋๊ตฌ
*Kibana(ํค๋ฐ๋): Elasticsearch์์ ์์ง๋ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ ๋์๋ณด๋๋ฅผ ์์ฑํ๋ ๋๊ตฌ
ES์ ๋จ์ ์ ์์๊น?
ํธ๋์ญ์ ๊ณผ ๋กค๋ฐฑ ๊ธฐ๋ฅ์ ์ ๊ณตํ์ง ์๋๋ค.
Elasticsearch๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ถ์ฐ ์์คํ
์ผ๋ก ๊ตฌ์ฑ๋๋๋ฐ, ์ ์ฒด์ ์ธ ํด๋ฌ์คํฐ์ ์ฑ๋ฅ ํฅ์์ ์ํด ์์คํ
์ ์ผ๋ก ๋น์ฉ ์๋ชจ๊ฐ ํฐ ๋กค๋ฐฑ(Rollback)๊ณผ ํธ๋์ญ์
(Transaction)์ ์ง์ํ์ง ์๋๋ค.
์ต์
์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์์ค์ ์ํ์ฑ์ด ์๋ค.
*ํธ๋์ญ์
(Transaction): DB๋๋ ์์คํ
์์ ์ฌ๋ฌ ์ฐ์ฐ์ ํ๋์ ๋
ผ๋ฆฌ์ ์ธ ์์
๋จ์๋ก ๋ฌถ์ด์ ์ฒ๋ฆฌํ๋ ๊ฐ๋
. ACID ๊ฐ๋
์ ๋ฐ๋ฆ.
*๋กค๋ฐฑ(Rollback): ํธ๋์ญ์
์ด ์คํจ ๋ฐ ์ค๋จ์, ์ด์ ์ํ๋ก ๋๋๋ฆฌ๋ ์์
๋ฐ์ดํฐ ์ ๋ฐ์ดํธ๊ฐ ํ๋ค ์ ์๋ค.
Elasticsearch๋ ์
๋ฐ์ดํธ ๋ช
๋ น์ด ์์ฒญ๋ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฌธ์๋ฅผ ์ญ์ ํ๊ณ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ผ๋ก ์๋ก์ด ๋ฌธ์๋ฅผ ์์ฑํ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ๋จ์ ์
๋ฐ์ดํธ์ ๋นํด์ ์๋์ ์ผ๋ก ๋ง์ ๋น์ฉ์ด ๋ฐ์ํ๋ค.
1๏ธโฃ ES์ ๊ธฐ๋ณธ ๊ฐ๋
ํด๋ฌ์คํฐ๋?
ํด๋ฌ์คํฐ๋ ํ๋ ์ด์์ ๋
ธ๋(์๋ฒ)๊ฐ ๋ชจ์ธ ๊ฒ์ด๋ฉฐ, ์ด๋ฅผ ํตํด ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๋ชจ๋ ๋
ธ๋๋ฅผ ํฌ๊ดํ๋ ํตํฉ ์์ธํ ๋ฐ ๊ฒ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋ถ์ฐ ์์คํ
์ผ๋ก ๋ฐ์ดํฐ์ ๋ถ์ฐ ์ ์ฅ๊ณผ ์ฒ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํ๋ฉฐ, ๊ณ ๊ฐ์ฉ์ฑ, ํ์ฅ์ฑ ๋ฐ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค.
*์์ธ(indexing): 2๋ฒ์์ ์ค๋ช
๋ ธ๋๋?
ํด๋ฌ์คํฐ์ ๊ตฌ์ฑ์์ผ๋ก, ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ์ญํ ์ ์ํํ๋ค.
ํด๋ฌ์คํฐ์ ๋ชจ๋ ๋
ธ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก HTTP๋ฅผ ์ฒ๋ฆฌํ๊ณ ํธ๋ํฝ์ ์ ์กํ ์ ์๋ค.
์ ์ก ๊ณ์ธต์ ๋
ธ๋ ๊ฐ ํต์ ์๋ง ์ฌ์ฉ๋๋ฉฐ HTTP ๊ณ์ธต์ REST ํด๋ผ์ด์ธํธ์์ ์ฌ์ฉ๋๋ค.
๋ชจ๋ ๋
ธ๋๋ ํด๋ฌ์คํฐ์ ๋ค๋ฅธ ๋ชจ๋ ๋
ธ๋์ ๋ํด ์๊ณ ์์ผ๋ฉฐ ํด๋ผ์ด์ธํธ ์์ฒญ์ ์ ์ ํ ๋
ธ๋๋ก ์ ๋ฌํ ์ ์๋ค.
๋
ธ๋์ ์ญํ ๋ก,
master,
data, data_content, data_hot, data_warm, data_cold, data_frozen,
ingest,
ml,
remote_cluster_client,
transform
์ด ์๋ค.
์ฐ์ , ๋ง์คํฐ ๋
ธ๋์ ๋ฐ์ดํฐ ๋
ธ๋๋ฅผ ์์๋ณด์.
๋ง์คํฐ ๋ ธ๋ (Master Node)
์ธ๋ฑ์ค์ ๋ฉํ ๋ฐ์ดํฐ, ์ค๋์ ์์น์ ๊ฐ์ ํด๋ฌ์คํฐ ์ํ(Cluster Status) ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ค.
ํด๋ฌ์คํฐ๋ง๋ค ํ๋์ ๋ง์คํฐ ๋
ธ๋๊ฐ ์กด์ฌํ๋ฉฐ, ๋ง์คํฐ ๋
ธ๋๊ฐ ์๋ ํด๋ฌ์คํฐ๋ ์๋์ด ์ ์ง๋๋ค.
elasticsearch.yml์ ๋ํดํธ ์ค์ ์ node.master:true๋ก ์ค์ ๋์ด ์๊ธฐ์, ๋ชจ๋ ๋
ธ๋๊ฐ ๋ง์คํฐ ๋
ธ๋๋ก ์ ์ถ๋ ์ ์๋ ๋ง์คํฐ ํ๋ณด ๋
ธ๋(master eligible node)์ด๋ค.
ํด๋ฌ์คํฐ๊ฐ ์ปค์ง๊ฒ ๋๋ฉด ๋
ธ๋์ ์ค๋๋ค์ ๊ฐ์๊ฐ ๋ง์์ ธ ๋ชจ๋ ๋
ธ๋๋ค์ด ๋ง์คํฐ ๋
ธ๋์ ์ ๋ณด๋ฅผ ๊ณ์ ๊ณต์ ํ๋ ๊ฒ์ ๋ถ๋ด์ด ๋ ์ ์๋ค.
์ด๋๋ ๋ง์คํฐ ๋
ธ๋์ ์ญํ ์ ์ํ ํ ํ๋ณด ๋
ธ๋๋ค๋ง ๋ฐ๋ก ์ค์ ํด์ ์ ์งํ๋ ๊ฒ์ด ์ ์ฒด ํด๋ฌ์คํฐ ์ฑ๋ฅ์ ๋์์ด ๋ ์ ์๋ค.
๋ง์คํฐ ๋
ธ๋๋ก ์ฌ์ฉํ์ง ์๋ ๋
ธ๋๋ค์ ์ค์ ๊ฐ์ node.master: false๋ก ํ์ฌ ๋ง์คํฐ ๋
ธ๋์ ์ญํ ์ ํ์ง ์๋๋ก ์ค์ ํ๋ค.
์ค์ ์ด์ ํ๊ฒฝ์์๋ ๋ง์คํฐ ํ๋ณด๋ฅผ 1๊ฐ๋ง ์ค์ ํ๋ฉด ์ ๋๊ณ , ์ต์ 3๊ฐ ์ด์์ ํ์๊ฐ๋ก ์ค์ ํด์ผ ํ๋ค.
(์ง์๊ฐ์ผ ๊ฒฝ์ฐ, ๋คํธ์ํฌ ๋จ์ ๋ก ํด๋ฌ์คํฐ๊ฐ ๋ถ๋ฆฌ๋๊ณ ๋ง์คํฐ ํ๋ณด ๋
ธ๋๊ฐ ๋ถ๋ฆฌ๋์ด ๋์ํ๋ฉด, ์ถํ ๋ค์ ํฉ์ณ์ก์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ํฉ์ฑ์ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ณ ๋ฌด๊ฒฐ์ฑ์ด ์ ์ง๋ ์ ์๊ฒ ๋๋ค. ์ด๋ฅผ Split Brain์ด๋ผ๊ณ ํ๋ค.)
7.0 ๋ถํฐ node.master: true์ธ ๋
ธ๋๊ฐ ์ถ๊ฐ๋๋ฉด ํด๋ฌ์คํฐ๊ฐ ์ค์ค๋ก minimum_master_nodes ๋
ธ๋ ๊ฐ์ ๋ณ๊ฒฝํ๋๋ก ๋์๋ค.
์ฌ์ฉ์๋ ์ต์ด ๋ง์คํฐ ํ๋ณด๋ก ์ ์ถํ cluster.initial_master_nodes: [ ] ๊ฐ๋ง ์ค์ ํ๋ฉด ๋๋ค.
๋ฐ์ดํฐ ๋ ธ๋ (Data Node)
๋ฐ์ดํฐ ๋
ธ๋๋ ์ค์ ๋ก ์์ธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋
ธ๋์ด๋ค.
ํด๋ฌ์คํฐ์์ ๋ง์คํฐ ๋
ธ๋์ ๋ฐ์ดํฐ ๋
ธ๋๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ค์ ํ ๋ ๋ง์คํฐ ํ๋ณด ๋
ธ๋๋ค์ node.data: false๋ก ์ค์ ํ์ฌ ๋ง์คํฐ ๋
ธ๋ ์ญํ ๋ง ํ๊ณ ๋ฐ์ดํฐ๋ ์ ์ฅํ์ง ์๋๋ก ํ ์ ์๋ค.
์ด๋ ๊ฒ ํ๋ฉด ๋ง์คํฐ ๋
ธ๋๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ์ง ์๊ณ ํด๋ฌ์คํฐ ๊ด๋ฆฌ๋ง ํ๊ฒ ๋๊ณ , ๋ฐ์ดํฐ ๋
ธ๋๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ์๋ง ์ง์คํ ์ ์๋ค.
2๏ธโฃ ๋ฐ์ดํฐ ์ ๋ ฅ ๋ฐ ์ ์ฅ
์์ธ(indexing)์ด๋?
๋ฐ์ดํฐ๊ฐ ๊ฒ์๋ ์ ์๋ ๊ตฌ์กฐ๋ก ๋ณ๊ฒฝํ๊ธฐ ์ํด ์๋ณธ ๋ฌธ์๋ฅผ ๊ฒ์์ด ํ ํฐ๋ค๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ ์ผ๋ จ์ ๊ณผ์ ์ด๋ค.
์ธ๋ฑ์ค(index)๋?
์์ธ ๊ณผ์ ์ ๊ฑฐ์น ๊ฒฐ๊ณผ๋ฌผ ๋๋ ์์ธ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์ ์ฅ์์ด๋ค.
๋ํ Elasticsearch์์ ๋ํ๋จผํธ๋ค์ ๋
ผ๋ฆฌ์ ์ธ ์งํฉ์ ํํํ๋ ๋จ์์ด๊ธฐ๋ ํ๋ค.
์ฆ, ๋ํ๋จผํธ๋ฅผ ๋ชจ์๋์ ์งํฉ์ ์๋ฏธํ๋ค.
*๋ํ๋จผํธ(document): ์์ธํํ ์ ์๋ ๊ธฐ๋ณธ ์ ๋ณด ๋จ์(๋จ์ผ ๋ฐ์ดํฐ ๋จ์)์ด๋ฉฐ, JSON ํ์์ผ๋ก ์ด๋ฃจ์ด์ง
์ค๋(shard)๋?
์์ธ์ ๋ฐฉ๋ํ ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋๋ฐ, ์ด ๋ฐ์ดํฐ๊ฐ ๋จ์ผ ๋
ธ๋์ ํ๋์จ์ด ํ๋๋ฅผ ์ด๊ณผํ ์ ๋ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ Elasticsearch์์ ์์ธ์ ์ค๋(shard)๋ผ๋ ์กฐ๊ฐ์ผ๋ก ๋ถํ ํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ค.
๋งคํ(Mapping)์ด๋?
Elasticsearch๋ ๋์ ๋งคํ์ ์ง์ํ๊ธฐ ๋๋ฌธ์ ๋ฏธ๋ฆฌ ์ ์ํ์ง ์์๋ ์ธ๋ฑ์ค์ ๋ํ๋จผํธ๋ฅผ ์๋ก ์ถ๊ฐํ๋ฉด ์๋์ผ๋ก ๋งคํ์ด ์์ฑ๋๋ค.
์ฃผ๋ก, ์๋์ ๊ฐ์ ๊ตฌ์กฐ๋ก ๋งคํ์ ์ ์ํ๋ค.
PUT <์ธ๋ฑ์ค๋ช
>
{
"mappings": {
"properties": {
"<ํ๋๋ช
>":{
"type": "<ํ๋ ํ์
>"
โฆ <ํ๋ ์ค์ >
}
โฆ
}
}
}
์ญ ์ธ๋ฑ์ค(inverted index)๋?
Elasticsearch๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ญ ์ธ๋ฑ์ค(inverted index)๋ผ๋ ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด ์ ์ฅํ๋ค.
์ถ์ถ๋ ๊ฐ ํค์๋๋ฅผ ํ
(term)์ด๋ผ๊ณ ๋ถ๋ฅด๋ฉฐ, ํด๋น ํ
์ ํฌํจํ๊ณ ์๋ ๋ํ๋จผํธ๋ค์ id๋ฅผ ๋ฐ๋ก ์ป์ด์ฌ ์ ์๋ค.
๋ฐ์ดํฐ๊ฐ ๋์ด๋๋ ์ญ ์ธ๋ฑ์ค๊ฐ ๊ฐ๋ฅดํค๋ id์ ๋ฐฐ์ด๊ฐ์ด ์ถ๊ฐ๋๋ ๊ฒ ๋ฟ์ด๊ธฐ ๋๋ฌธ์ ์ ํต RDBMS์ ๋นํด ๋น ๋ฅธ ๊ฒ์์ด ๊ฐ๋ฅํ๋ค.
3๏ธโฃ ๋ฐ์ดํฐ ๊ฒ์ ๋ฐ ์ง์
DSL(Domain Specific Language)์ด๋?
Elasticsearch๋ ๊ฒ์์ ์ํ Query DSL ์ด๋ผ๊ณ ๋ถ๋ฅด๋ ์ฟผ๋ฆฌ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
๋ง๊ทธ๋๋ก, Elasticsearch์์๋ ๋๋ฉ์ธ ํนํ ์ธ์ด๋ก์ JSON์ ๊ธฐ๋ฐํ ์ง์์ด๋ฅผ ์๋ฏธํ๋ค.
์ฆ, Elasticsearch์ Query DSL์ ๋ชจ๋ ์๋์ ๊ฐ์ด JSON ํ์์ผ๋ก ์
๋ ฅํด์ผ ํ๋ค.
GET my_index/_search
{
"query": {
"match": {
"message": "dog"
}
}
}
๐ ์ฐธ๊ณ ์๋ฃ
๊ณต์๋ฌธ์ ์์ฃผ๋ก ์ฐธ๊ณ ํ๋ค.
https://www.elastic.co/guide/kr/elasticsearch/reference/current/gs-basic-concepts.html
https://www.elastic.co/kr/what-is/elasticsearch
https://esbook.kimjmin.net/
https://12bme.tistory.com/589
โ๏ธ ๊ณต๋ถํ๋ฉฐ ๋๋์
์ญ์ ๊ณต๋ถํ ๋ด์ฉ์ด ๋ง์์ ๋๊ผ๋ค.
ES์์ ๋ถ์ฐ ์ฒ๋ฆฌํ๋ ๊ณผ์ ๊ณผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ตฌ์กฐ, ์ง์ ๋ฐฉ๋ฒ ๋ฑ์ด ์ ๊ธฐํ๊ธฐ๋ ํ๊ณ ...
๊ทธ๋ฆฌ๊ณ ํ์คํ ํ์ง์์ ๋ง์ด ์ฐ์ด๋ ๊ฒ ๊ฐ๋ค.
ES์ ๋ํด ๊ฒ์๋ง ํ๋ฉด ์ฌ๋ฌ ๊ตญ๋ด ๊ธฐ์ ๋ธ๋ก๊ทธ์์ ์ด ๊ธ์ด ๋ค์ ์กด์ฌํ๋ค.
๊ณต๋ถํ๋ฉด์ ์ง์ ์จ ๋ณผ์๋ก ๋ ์์๊ฐ๊ณ , ๋ ์ ๋๋ก ์๊ณ ์ถ์ด์ง๋ค. ES์ ๋ํด ์๋ฒฝํ ์ดํดํ๊ณ ์ถ๋ค.