๋ชฉํ: ์๋ผ์คํฑ์์น๊ฐ ์ํ์น ๋ฃจ์ฌ์ ์ด๋ป๊ฒ ์ฌ์ฉํ๋์ง ์์๋ณด๊ธฐ
Elasticsearch์ Apache Lucene์ ๊ด๊ณ
Apache Lucene์ ๋ฌธ์๋ฅผ ์์ธํ๊ณ ๊ฒ์ํ ์ ์๊ฒ ํด์ฃผ๋ ์คํ์์ค Java ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก, ๊ฐ๋ ฅํ ํ ์คํธ ๊ฒ์ ์์ง์ ๋๋ค.(https://lucene.apache.org/)
๋ฐ๋ฉด, Elasticsearch๋ Lucene์ ๊ธฐ๋ฐ์ผ๋ก ๋ง๋ค์ด์ง ๋ถ์ฐํ ๊ฒ์ ์์ง์ผ๋ก, Lucene์ ๋ณด๋ค ์ฝ๊ฒ ์ฌ์ฉ์๋ค์ด ์ฌ์ฉํ๊ธฐ ์ํด JSON ๊ธฐ๋ฐ์ RESTful HTTP API๋ฅผ ์ ๊ณตํ์ฌ ๋ณด๋ค ์ฝ๊ฒ ๋ฌธ์๋ฅผ ์์ธํ๊ณ ๊ฒ์ํ ์ ์๋๋ก ๋์์ค๋๋ค.
์๋ฅผ ๋ค์ด, GET์ผ๋ก ๊ฒ์ํ๊ณ , POST/PUT์ผ๋ก ๋ฌธ์๋ฅผ ์์ธํ๋ฉฐ, DELETE๋ก ๋ฌธ์๋ฅผ ์ญ์ ํ ์ ์์ต๋๋ค.
์ด ์ธ์๋ Elasticsearch๋ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํฉ๋๋ค. Elasticsearch๋ ์ต์ 3๊ฐ ์ด์์ ๋ ธ๋๋ก ํด๋ฌ์คํฐ ๊ตฌ์ฑํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์ด๋ ์ผ๋ถ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋ฐ์ํด๋, ๋ค๋ฅธ ๋ ธ๋์ ์ ์ฅ๋ ๋ณต์ ๋ณธ(replica)์ ํ์ฉํด ์๋น์ค ์ค๋จ ์์ด ์ด์ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค
์ํ์ ํ์ฅ์ด ์ฝ์ต๋๋ค. ์์ธํ ๋ฌธ์๊ฐ ๋ง์์ง๊ฑฐ๋ ๊ฒ์ ์์ฒญ์ด ๋ง์์ง ๊ฒฝ์ฐ, ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํจ์ผ๋ก์จ ์ฝ๊ฒ ํ์ฅ์ด ๊ฐ๋ฅํฉ๋๋ค. ์๋ก์ด ๋ ธ๋๊ฐ ํด๋ฌ์คํฐ์ ํฉ๋ฅํ๋ฉด ๊ธฐ์กด ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ๊ฑฐ๋ ์ฎ๊ธฐ๋ ์์ ๋ Elasticsearch๊ฐ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
Elasticsearch์ ๋ค์ํ ์ฅ์ ์ ๊ตฌ๊ธ๋งํ๋ฉด ๋ง์ ๊ธ์์ ์๊ฐํ์ฌ, ์ด๋ฒ ๊ธ์์๋ ์ด์ฏค์์ ๊ฐ๋จํ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค.
Elasticsearch๋ ํด๋ฌ์คํฐ ๋ฐ ๋ ธ๋ ๊ด๋ฆฌ๋ฅผ ์๋ํํด ํด๋ผ์ด์ธํธ์๊ฒ ๊ฐํธํ ์ด์ ํ๊ฒฝ์ ์ ๊ณตํ๊ณ , Lucene์ ๊ฒ์ ์์ง์ ํต์ฌ ๊ธฐ๋ฅ์ ๋ด๋นํ๋ ๊ตฌ์กฐ์ ๋๋ค.
๊ทธ๋ ๊ธฐ์ Elasicsearch๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ Lucene์ ์ ํ์๊ฐ ์์ต๋๋ค.
Lucene์ flush
- ๋ฌธ์ ์์ธ ์์ฒญ์ด ๋ค์ด์ค๋ฉด, ๋ฌธ์๋ฅผ ๋ถ์ํด ์ญ์์ธ(inverted index)์ ์์ฑํฉ๋๋ค.
- ์์ฑ๋ ์ญ์์ธ์ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์์๋ก ์ ์ฅํ๋ฉฐ, ์ด๋ค์ ๋์คํฌ์ ์ ์ฅํ๋ฉด ์ธ๊ทธ๋จผํธ(segment)๋ผ๋ Lucene ์ธ๋ฑ์ค ํ์ผ์ด ์์ฑ๋๊ณ , ์ด ์ธ๊ทธ๋จผํธ๋ค์ด ๋ฃจ์ฌ์ด ๊ฒ์ํ ๋์์ ๋๋ค.
- ๊ทธ๋ฆฌ๊ณ , ๋ฃจ์ฌ์ ์ด ์ธ๊ทธ๋จผํธ๋ค์ ๋์คํฌ์ write() ํฉ๋๋ค.(์ด ๋, OS๊ฐ ์ธ๊ทธ๋จผํธ๋ค์ ๋์คํฌ๊ฐ ์๋ ์์ ์ด ๊ด๋ฆฌํ๋ ๋ฉ๋ชจ๋ฆฌ์ ์ผ๋ถ์ธ ํ์ด์ง ์บ์(filesystem cache)์ ์ฌ๋ฆฝ๋๋ค.)
์ด ๊ณผ์ ์ Lucene์ flush๋ผ๊ณ ํฉ๋๋ค.
๐ก์ญ์์ธ ์ด๋?
Lucene์ด ๋ฌธ์๋ฅผ ๊ฒ์ ๊ฐ๋ฅํ ๋ฐ์ดํฐ๋ก ๋ง๋ค๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ผ์ข ์ ์๋ฃ๊ตฌ์กฐ
An "inverted index" is the data structure that Lucene uses to make data searchable
๐กํ์ด์ง ์บ์๋?
ํ์ด์ง ์บ์(page cache)๋ ๋๋๋ก ํ์ผ ์์คํ ์บ์๋ผ๊ณ ๋ ๋ถ๋ฆฌ๋ฉฐ, ์ด์์ฒด์ ๊ฐ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ์ฉํด ๋์คํฌ ๋ฐ์ดํฐ๋ฅผ ์์๋ก ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค. ์ฆ, ์ด์์ฒด์ ์์ค์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์บ์์ฒ๋ผ ์ฌ์ฉํ์ฌ, ๋์คํฌ I/O ์์ด ๋ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ๋ ๊ธฐ๋ฅ์ ๋๋ค.
Elasticsearch๋ ๊ฒ์ ์ฑ๋ฅ์ ๋์ด๊ธฐ ์ํด ํ์ผ ์์คํ ์บ์์ ๋ง์ด ์์กดํฉ๋๋ค. (Elasticsearch heavily relies on the filesystem cache in order to make search fast)
์ฆ, Lucene์ flush ๋ฅผ ํตํด ํ์ด์ง ์บ์์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ณ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ธฐ ๋๋ฌธ์ ๊ฒ์ ์ฑ๋ฅ์ด ํฅ์๋ฉ๋๋ค.
์ด๋ฌํ ์ด์ ๋ก, Elasticsearch๋ JVM Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ ์ฒด ์์คํ
๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฐ ์ดํ๋ก ์ค์ ํ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค.
๋๋จธ์ง ์ ๋ฐ์ ํ์ด์ง ์บ์ ์ฉ๋๋ก ์ด์์ฒด์ ๊ฐ ์ฌ์ฉํ ์ ์๋๋ก ๋จ๊ฒจ๋๊ธฐ ์ํจ์
๋๋ค.(Set JVM heap size)
์ฆ, JVM Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ์ฉ ๋ฉ๋ชจ๋ฆฌ์ ์ ๋ฐ ์ดํ๋ก ์ค์ ํ๋ ๊ฒ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น๊ฐ ์๋๋ผ๋ ๊ฒ์ ์๋ฏธํ๋ฉฐ, ์คํ๋ ค ํ์ด์ง ์บ์๋ฅผ ์ํด ์ฌ์ฌ์ฉ๋๊ณ ์๋ค๋ ๋ป์ ๋๋ค.
๋ํ ํ์ด์ง ์บ์๋ ์ปค๋ ๋ฌธ์์ ๋ช ์๋ ๊ฒ์ฒ๋ผ LRU(Least Recently Used) ๋ฐฉ์์ผ๋ก ๋์ํ๋ฉฐ, ์ค๋ ์ฌ์ฉํ์ง ์์ ๋ฐ์ดํฐ๋ถํฐ ์ ๊ฑฐ๋ฉ๋๋ค.(Elasticsearch Page Cache)
Elasticsearch์ Refresh
Elasticsearch์ refresh๋ Lucene์ flush ์ ํ์ฉํด ์์ฒญํ ๋ฌธ์๋ฅผ ์์ธ์์ผ ๊ฒ์ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
๋ฌธ์ ์์ธ ๊ณผ์
- Elasticsearch๋ ๋ฌธ์๋ฅผ ๋ฐ์ Lucene์ ์ ๋ฌ
- Lucene์ ๋ฌธ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ ๋ฒํผ์ ์์ธ(Lucene flush์ ์ผ๋ถ)
- ๋์์ Elasticsearch๋ ํด๋น ์์ ์ translog์ ๊ธฐ๋ก (translog์ ๋ํด์๋ ํ์ ์ค๋ช ํฉ๋๋ค)
- ์ด ๋จ๊ณ๊น์ง๋ ๊ฒ์์ด ๋ถ๊ฐ๋ฅํฉ๋๋ค
๊ฒ์ ๊ฐ๋ฅํด์ง๋ ์์ : refresh ๋ฐ์
- Elasticsearch์ refresh๊ฐ ๋ฐ์ํ๋ฉด,
- Lucene์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์์ธ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์๋ ์ธ๊ทธ๋จผํธ(segment)๋ก ์์ฑํ๊ณ , ํ์ด์ง ์บ์(filesystem cache)์ ๊ธฐ๋กํฉ๋๋ค. (Lucene flush ์ผ๋ถ)
- ์ด ์์ ๋ถํฐ ํด๋น ๋ฐ์ดํฐ(๋ฌธ์)๋ ๊ฒ์ ๊ฐ๋ฅํ ์ํ(searchable)๊ฐ ๋ฉ๋๋ค
๊ธฐ๋ณธ์ ์ผ๋ก refresh ์ฃผ๊ธฐ๋ 1์ด์ด๋ฉฐ, ์ด๋ ์ธ๋ฑ์ค ์์ฑํ ๋ refresh_interval ์ค์ ์ ํตํด ์กฐ์ ํ ์ ์์ต๋๋ค.
๋ค๋ง, refresh ๋ ๋ฌด๊ฑฐ์ด ์์ ์ด๊ธฐ ๋๋ฌธ์ ์ต๊ทผ 30์ด ์ด๋ด์ ํ ๋ฒ ์ด์ ๊ฒ์ ์์ฒญ์ ๋ฐ์ ์ธ๋ฑ์ค์ ํํด์๋ง ์ฃผ๊ธฐ์ ์ธ refresh๊ฐ ์ํ๋ฉ๋๋ค.
์ฌ๊ธฐ๊น์ง ์ ๋ฆฌํ์๋ฉด, ์์ธ๋๊ฑฐ๋ ๋ณ๊ฒฝ๋ ๋ฌธ์๋ฅผ ๊ฒ์ํ๋ ค๋ฉด Elasticsearch์ refresh๊ฐ ๋ฐ๋์ ํ์ํ๋ฉฐ, ์ด ๊ณผ์ ์์ ๋ด๋ถ์ ์ผ๋ก Lucene์ flush๊ฐ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐ์ดํฐ ์ ์ค ์ํ, Lucene์ commit ๋ฑ์ฅ
ํ์ง๋ง, ์ง๊ธ๊น์ง ๊ณผ์ ์ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(ํ์ด์ง ์บ์) ์๋ง ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ ์ ์ฅ์ ๋ ์์คํ ํฌ๋์ ์ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋ ์ํ์ด ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Lucene์ commit ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. Lucene์ commit์ fsync ๋ผ๋ ์์คํ ์ฝ์ ํตํด ์ด์์ฒด์ ์ ํ์ด์ง ์บ์์ ๋์คํฌ ๋ด์ฉ์ ๋๊ธฐํํ์ฌ ๋ฐ์ดํฐ์ ์์์ฑ์ ๋ณด์ฅํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , Elasticsearch์ flush๊ฐ Lucene์ commit์ ํธ๋ฆฌ๊ฑฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ฉ๋ชจ๋ฆฌ(ํ์ด์ง ์บ์)๊ฐ ์๋ ๋์คํฌ์ ๊ธฐ๋กํ ์ ์๋๋ก ํฉ๋๋ค. ์ด ๊ณผ์ ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์์ ํ๊ฒ ์๊ตฌ ์ ์ฅํ ์ ์๊ฒ ๋ฉ๋๋ค.
๋ค๋ง, ์ด ๊ณผ์ ์ ๋์คํฌ I/O๋ฅผ ์ ๋ฐํ๊ธฐ ๋๋ฌธ์ ๋น์ฉ์ด ํฐ ์์ ์ด๋ผ ์์ฃผํ ์ ์์ต๋๋ค. ๊ทธ๋ ๋ค๊ณ , ํ ๋ฒ์ ๋ง์ ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์ฐ๊ธฐ์๋ ์ธ์ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋ ์ง ๋ชจ๋ฅด๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
๋ฐ์ดํฐ ์ ์ค ๋ฐฉ์ง๋ฅผ ์ํ Translog์ ์ญํ ๊ณผ Elasticsearch์ flush
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ์ ์๋ผ์คํฑ์์น๋ Translog๋ฅผ ์ง์ํฉ๋๋ค.
Translog๋ ๋ฐ์ดํฐ ์ ์ค์ ๋ฐฉ์งํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ์ผ์ข ์ ๋ก๊ทธ์ ๋๋ค. Translog๋ Lucene์ ๋ฌธ์ ์์ธ ์์ ์ด ์ํ๋ ์งํ์ ๊ธฐ๋ก๋๋ฉฐ, ์ด๋ฌํ ๊ธฐ๋ก์ด ๋๋ ํ์์ผ Elasticsearch๋ ๋ฌธ์ ์์ธ์ ์์ฒญํ ํด๋ผ์ด์ธํธ์๊ฒ ์ฑ๊ณต(200, OK)๊ณผ ๊ฐ์ ์๋ต์ ๋ด๋ ค์ค๋๋ค.
์ฆ, Elasticsearch์ ์ค๋๋ ๋ชจ๋ ์์ ๋ง๋ค Translog๋ผ๋ ์ด๋ฆ์ ์์ ๋ก๊ทธ๋ฅผ ๋จ๊ธฐ๊ณ , ์ด๋ฌํ ๋ก๊ทธ๊ฐ ์ฅ์ ๋ฐ์ ์ ๋ณต๊ตฌ์ ํ์ฉ๋ฉ๋๋ค. ๋ง์ฝ ๋ ธ๋์ ์ฅ์ ๊ฐ ๋์ ๋ฐ์ดํฐ๊ฐ ์ ์ค๋๋ค๋ฉด ์ค๋ ๋ณต๊ตฌ ๊ณผ์ ์์ translog๋ฅผ ์ด์ฉํด Lucene์ commit์ ํฌํจ๋์ง ์์๋ ๋ฐ์ดํฐ๋ค์ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
ํ์ง๋ง Translog์ ํฌ๊ธฐ๊ฐ ๋๋ฌด ์ปค์ง๋ฉด, ๋ณต๊ตฌ ๊ณผ์ ์์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค. ์ด๋ฅผ ๋ฐฉ์งํ๊ธฐ ์ํด Elasticsearch๋ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์ฃผ๊ธฐ์ ์ผ๋ก flush๋ฅผ ์ํํ์ฌ Translog์ ํฌ๊ธฐ๋ฅผ ์ ์ ํ๊ฒ ์ ์งํฉ๋๋ค.
์ฆ, Elasticsearch์ flush๋
- Lucene์ commit์ ํธ๋ฆฌ๊ฑฐํด ๋ฐ์ดํฐ๋ฅผ ๋์คํฌ์ ์๊ตฌ์ ์ผ๋ก ์ ์ฅํ๊ณ ,
- ํด๋น ๋ฐ์ดํฐ์ ๋ํ Translog๊ฐ ๋ ์ด์ ํ์ ์์ด์ง๋ฏ๋ก, ํธ๋์ญ์ ๋ก๊ทธ๋ฅผ ํจ๊ป ๋น์ฐ๋ ์์ ๊น์ง ์ํํฉ๋๋ค.
์ธ๊ทธ๋จผํธ ๊ตฌ์กฐ์ ์ญ์ ์ฒ๋ฆฌ ๋ฐฉ์
Elasticsearch์์ ๋ฌธ์์ UPDATE๋ ๊ธฐ์กด ๋ฌธ์๋ฅผ ์์ ํ๋ ๊ฒ์ด ์๋๋ผ, ๊ธฐ์กด ๋ฌธ์๋ฅผ ์ญ์ ํ๊ณ , ๋ณ๊ฒฝ๋ ๋ด์ฉ์ ํฌํจํ ์๋ก์ด ๋ฌธ์๋ฅผ ์ฌ์์ธํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌ๋ฉ๋๋ค.
์ ์ด๋ ๊ฒ ์๋ํ๋์ง ์๋ ค๋ฉด Lucene ์ ์ธ๊ทธ๋จผํธ์ ๋ํด ์ดํดํด์ผ ํฉ๋๋ค. Lucene flush๊ฐ ๋ฐ์ํ๋ฉด, ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์์ธ ์ ๋ณด๊ฐ ์ธ๊ทธ๋จผํธ(segment)๋ผ๋ ํํ๋ก ๋์คํฌ์ ์ ์ฅ๋ฉ๋๋ค.(์ฌ์ค์ OS๊ฐ ๋์คํฌ์ ์ฐ์ง ์๊ณ , ๋ฉ๋ชจ๋ฆฌ์ ์ฌ๋ฆฌ๊ฒ ์ง๋ง์)
์ด๋ ๊ฒ ์์ฑ๋ ์ธ๊ทธ๋จผํธ๋ค์ ๊ณ์ ๋์คํฌ์ ์์ด๊ฒ ๋๊ณ , Lucene์ ์ด ์ธ๊ทธ๋จผํธ ๋จ์๋ก ๊ฒ์์ ์ํํฉ๋๋ค.
๊ทธ๋ฐ๋ฐ ์ค์ํ ์ ์, ์ธ๊ทธ๋จผํธ๋ ํ ๋ฒ ์์ฑ๋๋ฉด ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๋ถ๋ณ ๊ตฌ์กฐ๋ผ๋ ๊ฒ์
๋๋ค.
๋ฐ๋ผ์ ๋ฌธ์๋ฅผ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ๊ฒฝ์ฐ, Lucene์ ์ธ๊ทธ๋จผํธ์์ ํด๋น ๋ฌธ์๋ฅผ ์ค์ ๋ก ์ญ์ ํ์ง ์๊ณ , ์ญ์ ํ๋๊ทธ(delete flag)๋ฅผ ํ์ํด๋๊ณ ๊ฒ์ ์ ์ ์ธ์ํค๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๊ทธ๋์, Elasticsearch์ UPDATE๋ Lucene ๋์ ๋ฐฉ์์ ๋ฐ๋ผ ๊ธฐ์กด ๋ฌธ์์ ์ญ์ ํ๋๊ทธ๋ฅผ ์ค์ ํ๊ณ , ์์ ๋ ๋ด์ฉ์ ๋ด์ ์๋ก์ด ๋ฌธ์๋ฅผ ์๋ก์ด ์ธ๊ทธ๋จผํธ์ ์์ธํ๋ ๋ฐฉ์์ผ๋ก ๋์ํฉ๋๋ค.
์ด๋ ๊ฒ ํด์ ์ญ์ ํ๋๊ทธ๊ฐ ํ์๋ ๋ฌธ์๋ค์ด ํฌํจ๋ ์ธ๊ทธ๋จผํธ๋ ๋์ค์ ์ธ๊ทธ๋จผํธ ๋ณํฉ(segment merge)์ด ์ํ๋ ๋ ์ฌ๋ฌ ์์ ์ธ๊ทธ๋จผํธ๋ฅผ ํ๋์ ํฐ ์ธ๊ทธ๋จผํธ๋ก ํตํฉํ๋ฉด์ ๋์์ ์ญ์ ๋ ๋ฌธ์๋ฅผ ์ค์ ๋์คํฌ์์ ์ ๊ฑฐํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์ธ๊ทธ๋จผํธ ๋ณํฉ์ ํตํด ๊ฒ์ํ ์ธ๊ทธ๋จผํธ ์๊ฐ ์ค์ด๋๋ฏ๋ก ๋ฌธ์ ๊ฒ์์ ๋ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ฒ ๋ฉ๋๋ค.(๋ง์น RDBMS์ ์ญ์ ๊ทํ ๊ฐ๋ค๋ ์๊ฐ์ด ๋ญ๋๋ค)
* ๋ณํฉ์ฃผ๊ธฐ์ ๋ํด ๊ถ๊ธํ์ ๋ถ๋ค์ ๋งํฌ ๊ฑธ์ด๋๊ฒ ์ต๋๋ค. ๋ค๋ง, ํด๋น ๋ฌธ์์์๋ ์ต์ ํ๊ฐ ๋์ด์๋ค๊ณ ์ค๋ช ํ๋ฉฐ, ์ต์ ํ ๋ฐฉ๋ฒ์ ํด๋น ๋ฌธ์์ ๋์ค๋ ๋จ์ด๋ค์ ๋ณด์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค. https://www.elastic.co/guide/en/elasticsearch/reference/current/index-modules-merge.html
์ฐธ๊ณ
- What is the difference between Lucene and Elasticsearch
- ์๋ผ์คํฑ ๋ฐ์ด๋ธ
- What is the internal structure of Elasticsearch when it is clustered?
- Elasticsearch Page Cache(https://www.elastic.co/blog/elasticsearch-caching-deep-dive-boosting-query-speed-one-cache-at-a-time)
- Elasticsearch Flush API(https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-flush.html)
- Elasticsearch Refresh API(https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-refresh.html)
- https://stackoverflow.com/questions/15426441/understanding-segments-in-elasticsearch
- https://stackoverflow.com/questions/19963406/refresh-vs-flush
'Elasticsearch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๊ฒ์ ์๊ตฌ ์ฌํญ์ ์ํ Elasticsearch ์ธ๋ฑ์ค & Query DSL ์ค๊ณ๊ธฐ (2) | 2025.05.02 |
---|