ํน์ง
- ๊ฒ์ ์์ง: ์ ๋ฌธ ๊ฒ์ ์ง์, ์ญ์์ธ ํตํ ๋น ๋ฅธ ์๋, ์ ๋๋ผ์ด์ ํตํ ํํ์ ๋ถ์
- ๋ถ์ฐ ์ฒ๋ฆฌ
- ๊ณ ๊ฐ์ฉ์ฑ
- ์ํ์ ํ์ฅ์ฑ
- JSON๊ธฐ๋ฐ REST API
- ์ค์ค์๊ฐ ๊ฒ์: ์ญ์์ธ์ผ๋ก๋ถํฐ ๊ฒ์์ด ๊ฐ๋ฅํด์ง๊ธฐ๊น์ง 1์ด์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๊ธฐ์, ์ค์ค์๊ฐ ๊ฒ์์ด๋ผ ํ ์์๋ค.
- ์กฐ์ธ๊ณผ ํธ๋์ญ์ ๋ฏธ์ง์
Elasticsearch์์ ํ๋์ ์ธ๋ฑ์ค์ ํ๋์ ํ์ ๋ง ๊ตฌ์ฑํ ์ ์๋ค๋ ์ ์ฝ์ด ์์ง๋ง, ๋ค๋ฅธ ํ์ ์ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ ๋ฐฐ์ด์ด๋ ๋ค์ํ ํ๋๋ก ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ ์ ์๋ค.
๋ฌธ์ ์์ธ
1. ์์ธ(Indexing)
PUT [์ธ๋ฑ์ค ์ด๋ฆ] /_doc/[_id๊ฐ]
{
[๋ฌธ์ ๋ด์ฉ]
}
๋ฐ์ดํฐ๋ฅผ Elasticsearch์ ์ ์ฅํ๋ ๊ณผ์ . ์ด ์์ ์ ์ฃผ๋ก ๋ฌธ์(document)๋ฅผ ํน์ ํ์์ผ๋ก Elasticsearch์ ์ธ๋ฑ์ค์ ์ ์ฅํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ์ ์ฅ๋ ๋ฐ์ดํฐ๋ Elasticsearch์์ ํจ์จ์ ์ผ๋ก ๊ฒ์๋ ์ ์๋๋ก ๊ตฌ์กฐํ
๋ฌธ์ ์๋ณ ์ํด _id ์ฌ์ฉ, _id ์ฌ์ฉ ์ํ ๊ฒฝ์ฐ ์๋์์ฑ
2. ์กฐํ
GET [์ธ๋ฑ์ค ์ด๋ฆ] /_doc/[_id๊ฐ]
3. ๋ฌธ์ ์ ๋ฐ์ดํธ
POST [์ธ๋ฑ์ค ์ด๋ฆ] /_update/[_id๊ฐ]
{
“doc”:{
[๋ฌธ์ ๋ด์ฉ]
}
}
4. ๋ฌธ์ ๊ฒ์
GET [์ธ๋ฑ์ค ์ด๋ฆ]/_search
Post [์ธ๋ฑ์ค ์ด๋ฆ]/_serach
๊ฒ์์ body๋ฅผ ์ฌ์ฉํ๋ค๋ณด๋, get์ ์ฐ๋๊ฒ๋ post๋ฅผ ์ฐ๋๊ฒ๋ ์ด์ํ๋ค. ๋ฐ๋ผ์ ๋๋ค ๋๋๋ก ํ์๋ค.
5 ๋ฌธ์ ์ญ์
DELETE [์ธ๋ฑ์ค ์ด๋ฆ]/_doc/[_id๊ฐ]
๊ตฌ์กฐ
- ๋ฌธ์
- ์ธ๋ฑ์ค: ๋ฌธ์ ๋ชจ์ ๋์ ๋จ์
- ์ค๋: ์ธ๋ฑ์ค์์ ๊ฐ ๋ฌธ์์ ๋ด์ฉ์ ์ฌ๋ฌ ์ค๋๋ก ๋ถ๋ฆฌํด์ ๋ถ์ฐ ์ ์ฅ, ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด ์ค๋ ๋ณต์ ๋ณธ
- ๋ ธ๋: ํ๋์ ๋ ธ๋๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋, ๊ณ ๊ฐ์ฉ์ฑ์ ์ํด ๊ฐ์ ์ข ๋ฅ ์ค๋๋ฅผ ๊ฐ์ ๋ ธ๋์ ๋ฐฐ์น ํ์ง ์์
- ํด๋ฌ์คํฐ: ๋ ธ๋ ์ฌ๋ฌ๊ฐ๊ฐ ๋ชจ์
๋ฃจ์ฌ
๋ฌธ์ ์์ธํ๊ณ ๊ฒ์ํ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
์จ๋ผ์คํฑ์์น๋ ์ํ์น ๋ฃจ์ฌ์ ์ฝ์ด ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ฌ์ฉํ๋ค.
- ๋ฃจ์ฌ flush: ์๋ผ์คํฑ์์น refresh๊ฐ ์ด๋ฌํ ๋ฃจ์ฌ flush๋ฅผ ์ด์ฉ, ๋ฃจ์ฌ flush != ์๋ผ์คํฑ์์น flush
- ๋ฃจ์ฌ commit: ์ฃผ๊ธฐ์ ์ผ๋ก ์ปค๋์ ํ์ด์ง ์บ์ ๋ด์ฉ๊ณผ, ์ค์ ๋์คํฌ์ ๊ธฐ๋ก๋ ๋ด์ฉ์ ๋๊ธฐํ ํ์
- ๋ฃจ์ฌ ์ธ๋ฑ์ค: ํ์ผ๋ค์ ๋ชจ์ ๋ถ๋ณ์ ๋ฐ์ดํฐ ๋จ์๊ฐ ์ธ๊ทธ๋จผํธ, ์ฌ๋ฌ๊ฐ์ ์ธ๊ทธ๋จผํธ -> ๋ฃจ์ฌ ์ธ๋ฑ์ค๊ฐ ๋๊ณ , ์ด๊ฒ ์๋ผ์คํฑ์์น ์ค๋, ๊ทธ๋ฆฌ๊ณ ์ด๋ฌํ ์๋ฌ์คํฑ์์น ์ค๋๊ฐ ๋ชจ์ฌ ์๋ผ์คํฑ์์น ์ธ๋ฑ์ค๊ฐ ๋จ
- translog: commit์ ๋น์ฉ์ด ๋ง์ด๋ค์ด, ์์ ๋ก๊ทธ๋ฅผ ๋จ๊ฒผ๋ค๊ฐ ๋์ค์ ์ฒ๋ฆฌ. translogํฌ๊ธฐ๋ ์ ์ ํ ์ ์งํด์ผํ๋ฉฐ ์ด๋ฅผ ๋ฃจ์ฌ commit์ด ํด์ค
์ธ๋ฑ์ค
numbers_of_shards: ์ธ๋ฑ์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ๋ช ๊ฐ์ ์ค๋๋ก ์ชผ๊ฐค์ง ์ ํจ, ์ค๋๊ฐ ๋ง์์ง๋ฉด ํด๋ฌ์คํฐ ์ฑ๋ฅ์ด ๋จ์ด์ง๊ณ , ์ค๋๊ฐ ์ ์ผ๋ฉด ์ค๋ ํ๋์ ํฌ๊ธฐ๊ฐ ์ปค์ง๊ธฐ์, ์ฅ์ ๋ณต๊ตฌ์ ์ค๋ ์๊ฐ ๊ฑธ๋ฆผ -> ์ ์ ํ ์กฐ์น ํ์
numbers_of_replicas: ์ฃผ ์ค๋ ํ๋๋น ๋ณต์ ๋ณธ ์ค๋๋ฅผ ๋ช๊ฐ ๋์ง, ๊ณ ๊ฐ์ฉ์ฑ ๊ณ ๋ ค
refresh_interval: referesh๋ฅผ ์ผ๋ง๋ ์์ฃผ ์ํํ ์ง ์ง์ , refresh ๋์ด์ผ ๊ฒ์ ๋์์ด ๋๋ค.
์ธ๋ฑ์ค๋ ๋ ๊ฐ์ ์ ๋ณด ๋จ์๋ฅผ ๊ฐ์ง๋ค. settings, mappings
- ๋งคํ: ๋ฌธ์๊ฐ ์ธ๋ฑ์ค์ ์ด๋ป๊ฒ ์์ธ๋๊ณ ์ ์ฅ๋ ์ง ์ ์
- ๋์ ๋งคํ: ์๋ผ์คํฑ์์น๊ฐ ์๋ ์์ฑํด์ฃผ๋ ๋งคํ
- ๋ช ์์ ๋งคํ: ์ฌ์ฉ์๊ฐ ์ง์ ๋งคํ ์ง์ (๊ถ์ฅ)
ํ๋ํ์
- ์ฌํ ํ์ : text, keyword, date, ์ซ์ํ์
- ๊ณ์ธต ๊ตฌ์กฐ ์ง์ ํ์ : object, nested
๋ฐฐ์ด: ์ฌ๋ฌ ํ์ ์ด ํผํฅ๋ ๋ฐฐ์ด์ ์์ธ์ ์คํจ. ํ๊ฐ์ง ์ข ๋ฅ ๋ฐ์ดํฐ๋ง ์์ธ ๊ฐ๋ฅ
- object: JSON๋ฌธ์๋ ํ๋ ํ์์ ๋ค๋ฅธ ํ๋๋ฅผ ํฌํจํ๋ ๊ฐ์ฒด ๋ฐ์ดํฐ๊ฐ ๋ด๊ธธ ์ ์๋ค. ๋ด๋ถ์ ์ผ๋ก ํํํ๋ ํค-๊ฐ ์์ผ๋ก ์์ธ๋จ
- ์ด๋ ํํํ๋๋ ๊ณผ์ ์ด ์ค์ํ๋ค. ๋ฐฐ์ด์ ๊ตฌ์ฑํ๋ ๊ฐ์ฒด ๋ฉํฐ๋ฅผ ์๋ก ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ก ์ทจ๊ธํ์ง ์๋๋ค.
- nestd: ๋ฐฐ์ด ๋ด ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ทจ๊ธํจ. ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ด๋ถ์ ์ผ๋ก ๋ณ๋์ ๋ฃจ์ฌ ๋ฌธ์๋ก ๋ถ๋ฆฌํด ์ ์ฅํ๋ค. ์ด๋ฌํ ๋์ ๋ฐฉ์์ด ๋ ํนํ๊ธฐ์ nested ์ฟผ๋ฆฌ๋ฅผ ์ ์ฉ์ผ๋ก ์ด์ฉํด์ ๊ฒ์. ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ณ๋์ ๋ฌธ์๋ก ๋ถ๋ฆฌํด์ ์ ์ฅํ๊ธฐ์, ์ฑ๋ฅ ๋ฌธ์ ๊ฐ๋ฅ
์ ๋ฆฌํ๋ฉด
- object(default) - ์ฉ๋: ์ผ๋ฐ์ ์ธ ๊ณ์ธต ๊ตฌ์กฐ, ์ฑ๋ฅ: ๊ฐ๋ณ๋ค. ๊ฒ์: ์ผ๋ฐ ์ฟผ๋ฆฌ
- nested - ์ฉ๋: ๋ฐฐ์ด ๋ด ๊ฐ ๊ฐ์ฒด๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ์ทจ๊ธ, ์ฑ๋ฅ: ๋ฌด๊ฒ๊ณ , ๋ด๋ถ ๋ฌธ์๋ก ์์ฑ. ๊ฒ์: ์ ์ฉ nested ์ฟผ๋ฆฌ
๋ฌธ์์ด ํ์
- text: ์ ๋๋ผ์ด์ ๊ฐ ์ ์ฉ๋ ํ ์์ธ๋จ. ์ฌ๋ฌ ํ ํฐ์ผ๋ก ์ชผ๊ฐฌ. ํ
: ์ชผ๊ฐ์ง ํ ํฐ์ ์ง์ ํ ํํฐ๋ฅผ ์ ์ฉํ์ฌ ํ์ฒ๋ฆฌ ์์
ํ ์ญ์์ธ์ ๋ค์ด๊ฐ๋ ํํ.
- Hello world -> hello๋ฅผ ๊ฒ์ํ๋ฉด ๋์ด
- keyword: ์ชผ๊ฐ์ง ์๊ณ ์ญ์์ธ์ ๊ตฌ์ฑ. ๊ฐ๋จํ ์ ์ฒ๋ฆฌ ํ ๋จ์ผ ํ
์ผ๋ก ์ญ์์ธ์ ๊ตฌ์ฑ
- Hello world -> hello๋ฅผ ๊ฒ์ํ๋ฉด ์ ๋์ด
์ ๋๋ผ์ด์ &๋ ธ๋ฉ๋ผ์ด์
์ ๋๋ผ์ด์ ์ ํ ์ข ๋ฅ๊ฐ ํ ํฌ๋์ด์ . ๋ฐ๋ ๊ฐ๋ ์ผ๋ก ๋ ธ๋ฉ๋ผ์ด์ ธ
match ์ฟผ๋ฆฌ: ๊ฒ์ ๋์ ํ๋๊ฐ text ํ์ ์ธ ๊ฒฝ์ฐ ๊ฒ์ ์ง์์ด๋ ์ ๋๋ผ์ด์ ๋ก ๋ถ์
์ ๋๋ผ์ด์
0๊ฐ ์ด์์ ์บ๋ฆญํฐ ํํฐ, 1๊ฐ์ด์์ ํ ํฌ๋์ด์ , 0๊ฐ ์ด์์ ํ ํฐ ํํฐ๋ก ๊ตฌ์ฑ๋จ
Text Analysis๋? ์๋ผ์คํฑ์์น์ ์ ์ฅ๋๋ doc๋ ๋ชจ๋ ๋ฌธ์์ด(text) ํ๋๋ณ๋ก ์ญ์ธ๋ฑ์ค๋ฅผ ์์ฑํ์ฌ ๋ฌธ์์ด field๊ฐ ์ ์ฅ๋ ๋ ๋ฐ์ดํฐ์์ ๊ฒ์์ด ํ ํฐ์ ์ ์ฅํ๊ธฐ ์ํด ๊ฑฐ์น๋ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์๋ฏธ
๋ฐ์ดํฐ ์ ๋ ฅ -> ํํฐ๋ง -> ํ ํฌ๋์ด์ -> ํ ํฐ ํํฐ
์ ๋ ฅ ํ ์คํธ: ์ ๋๋ผ์ด์ ๋ ์๋ณธ ํ ์คํธ ๋ฐ์ดํฐ๋ฅผ ์ ๋ ฅ๋ฐ์
์บ๋ฆญํฐ ํํฐ(Character Filter)
- ํ ์คํธ์ ์ ์ฒ๋ฆฌ ๋จ๊ณ๋ก, ํ ์คํธ์์ ํน์ ๋ฌธ์๋ฅผ ์์ ํ๊ฑฐ๋ ์ ๊ฑฐํ๋ ์์
- ex) ํน์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, ๋์๋ฌธ์๋ฅผ ๋ณํํ๋ ๋ฑ์ ์์
- ์ด ๋จ๊ณ์์ ํ ์คํธ๋ ๋ณํ๋์ง๋ง ์์ง์ ํ๋์ ๊ธด ๋ฌธ์์ด ํํ๋ก ๋จ์ ์๋ค.
ํ ํฌ๋์ด์ (Tokenizer)
- ์บ๋ฆญํฐ ํํฐ๊ฐ ์ ์ฉ๋ ํ ์คํธ์์ ๋จ์ด๋ ๋ฌธ์ฅ ๋ฑ์ ๋จ์๋ก ํ ์คํธ๋ฅผ ๋๋๋ ๋จ๊ณ
- ์ด๋ ํ ํฐ์ ๋จ์ด, ๊ตฌ, ๊ธฐํธ ๋ฑ์ผ๋ก ๋๋์ด์ง๋ค.
- ex) "I love NLP"๋ผ๋ ๋ฌธ์ฅ์ด ์๋ค๋ฉด, "I", "love", "NLP"๋ผ๋ ์ธ ๊ฐ์ ํ ํฐ์ผ๋ก ๋ถ๋ฆฌ
ํ ํฐ ํํฐ(Token Filter)
- ๋ถ๋ฆฌ๋ ํ ํฐ์ ๋ํด ์ถ๊ฐ์ ์ธ ๋ณํ์ ๊ฐํ๋ ๋จ๊ณ
- ๋ถ์ฉ์ด ์ ๊ฑฐ(stop words removal), ํํ์ ๋ถ์, ์ด๊ฐ ์ถ์ถ(stemming), ํ์ ์ด ์ถ์ถ(lemmatization)
- ex) "running"์ "run"์ผ๋ก ๋ฐ๊พธ๊ฑฐ๋, ๋ถํ์ํ ๋จ์ด๋ฅผ ์ ๊ฑฐํ๋ ์์
์ต์ข ๋ถ์ ์๋ฃ๋ ํ
- ์ต์ข ์ ์ผ๋ก ์ด ๋ชจ๋ ๋จ๊ณ๋ฅผ ๊ฑฐ์น ํ, ๋ถ์๋ ํ ํฐ ์คํธ๋ฆผ์ด ์ต์ข ๋ถ์ ๊ฒฐ๊ณผ๋ก ๋ฐํ
- ๋ด์ฅ ์ ๋๋ผ์ด์ ๋ก ํ๊ณ ์ ํ๋ ๊ฒ์ ํ๊ธฐ์ ๋ถ์กฑํ๋ค๋ฉด ์ปค์คํ ์ ๋๋ผ์ด์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์บ๋ฆญํฐ ํํฐ, ํ ํฌ๋์ด์ , ํ ํฐ ํํฐ์ ์ ์ ํ ์ ์ฉํ์ฌ ์์ ๋ง์ ์ ๋๋ผ์ด์ ๋ฅผ ๋ง๋ค ์ ์๋ค.
- nori, smartcn,kuromoji ์ ์ฌ์ฉํ์ฌ ํ,์ค,์ผ ์ธ์ด๋ฅผ ๋ถ์ํ ์ ์๋ค.
๋ ธ๋ฉ๋ผ์ด์
๋ ธ๋ฉ๋ผ์ด์ ๋ ํ ์คํธ๋ฅผ ํ์คํํ๋ ์์ ์ ํ๋ฉฐ, ์บ๋ฆญํฐ ํํฐ์ ํ ํฐ ํํฐ๋ก ๊ตฌ์ฑ.
๋ ธ๋ฉ๋ผ์ด์ ์ ๋ชฉํ๋ ํ ์คํธ๋ฅผ ์ผ์ ํ ๊ท์น์ ๋ฐ๋ผ ๋ณํํ์ฌ ์ต์ข ์ ์ผ๋ก ๋จ์ผ ํ ํฐ์ ์์ฑํ๋ ๊ฒ
- ์บ๋ฆญํฐ ํํฐ (Character Filter): ํ
์คํธ์ ๋ฌธ์ ๋จ์์์ ๋ณ๊ฒฝ์ ์ํ
- ex) ํน์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋ ๋์๋ฌธ์๋ฅผ ํต์ผํ๋ ์์ ์ ํฉ๋๋ค.
- ํ ํฐ ํํฐ (Token Filter): ๋ถ๋ฆฌ๋ ํ ํฐ์ ๋ํด ๋ณํ
- ex) ๋ถ์ฉ์ด๋ฅผ ์ ๊ฑฐํ๊ฑฐ๋, ์ด๊ฐ ์ถ์ถ(stemming), ํ์ ์ด ์ถ์ถ(lemmatization)์ ํ๋ ์์
๋ชฉํ๋ ๋จ์ผ ํ ํฐ์ ์์ฑํ๋ ๊ฒ์ธ๋ฐ, ์ด๋ ๊ธ์ ๋จ์๋ก ์์ ์ ์ํํ๋ ํํฐ๋ง ์ฌ์ฉํ ์ ์๋ค๋ ์ ์ด ์ค์ํ ํน์ง
์ฆ, ํ ์คํธ ๋ถ์์ ํตํด ํ ํฐ์ ๋ถ๋ฆฌํ ํ, ๊ทธ ํ ํฐ์ ํ์คํํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐฉ์
ํ ํ๋ฆฟ (Template)
ํ ํ๋ฆฟ์ ์ฌ์ ์ ์ ์๋ ์ค์ ์ ํตํด ์ธ๋ฑ์ค๊ฐ ์ผ๊ด๋ ๋ฐฉ์์ผ๋ก ์์ฑ๋๋๋ก ํ๋ ๋ฐฉ๋ฒ
๋์ปค ์ปดํฌ์ฆ(Docker Compose)์ ๋น์ท
- ๋์ปค ์ปดํฌ์ฆ๊ฐ ์ฌ๋ฌ ๊ฐ์ ์ปจํ ์ด๋๋ฅผ ์ฌ์ ์ ์๋ ์ค์ ์ผ๋ก ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์๊ฒ ํด์ฃผ๋ฏ, ํ ํ๋ฆฟ์ ์ธ๋ฑ์ค ์์ฑ ์ ์ฌ๋ฌ ์ค์ ์ ๋ฏธ๋ฆฌ ์ ์ํ์ฌ, ์ผ๊ด์ฑ ์๋ ์ธ๋ฑ์ค ์ค์ ์ ์๋ํ
ํ ํ๋ฆฟ์ ์ฌ์ฉํ๋ฉด ๊ธฐ๋ณธ ์ค์ ์ ํ๋ฒ ์ ์ํด๋๊ณ , ์ดํ ์ธ๋ฑ์ค๊ฐ ์์ฑ๋ ๋ ๊ทธ ์ค์ ์ด ์๋์ผ๋ก ์ ์ฉ๋๋ฏ๋ก, ์ฌ๋ฌ ์ธ๋ฑ์ค์์ ๋์ผํ ์ค์ ์ ๋ฐ๋ณต์ ์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅ
- ์ปดํฌ๋ํธ ํ ํ๋ฆฟ (Component Template): ์ค๋ณต๋๋ ์ค์ ์ ์์ ๋ธ๋ก์ผ๋ก ์ชผ๊ฐ์ด ์ฌ๋ฌ ํ ํ๋ฆฟ์์ ์ฌ์ฌ์ฉํ ์ ์๋๋ก ๋ง๋ ํ ํ
- ๋ ๊ฑฐ์ ํ ํ๋ฆฟ (Legacy Template): ์ด์ ๋ฒ์ ์ ํ ํ๋ฆฟ
- ๋์ ํ ํ๋ฆฟ (Dynamic Template): ์๋ก ๋ค์ด์ค๋ ํ๋์ ๋ํด ์ฌ์ ์ ์๋ ๋งคํ ๊ท์น์ ์๋์ผ๋ก ์ ์ฉํ๋ ํ ํ๋ฆฟ
๋ผ์ฐํ
์์ฒญ์ ์ฒ๋ฆฌํ ๋, ํน์ ์ค๋(shard)๋ ์ธ๋ฑ์ค๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฐฐํ๋ ์ญํ
์ฆ, ํด๋ฌ์คํฐ ๋ด์์ ๋ฐ์ดํฐ๊ฐ ์ด๋์ ์ ์ฅ๋ ์ง ๊ฒฐ์ ํ๋ ๋ฐ์ดํฐ ๋ผ์ฐํ ์ ๋ด๋น
๋ผ์ฐํ ๊ฐ ๊ธฐ์ ํ์ง ์์ผ๋ฉด ์ ์ฒด ์ค๋ ๋์์ผ๋ก ๊ฒ์ ์ํ, ๋ช ์ํ๋ฉด ๋จ์ผ ์ค๋ ๋์์ผ๋ก ๊ฒ์ ์ํ
- ๋ชฉ์ : ์์ฒญ์ ์ฒ๋ฆฌํ ๋ ์ ์ ํ ์ค๋๋ก ๋ฐ์ดํฐ๋ฅผ ๋ผ์ฐํ ํ์ฌ ํจ์จ์ ์ธ ๊ฒ์๊ณผ ์์ธ์ ์ง์ํฉ๋๋ค.
- ์์: ํน์ ๋ฌธ์๊ฐ ์ด๋ ์ค๋์ ์๋์ง ์์๋ด์ด ๊ทธ ์ค๋๋ก ์์ฒญ์ ์ ๋ฌํฉ๋๋ค.
์ง๊ณ(aggregation)
size 0 -> ๋ฌธ์ ๋ด์ฉ์ ๋ฐํํ์ง ์๊ณ ์ง๊ณ ๊ฒฐ๊ณผ๋ง ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ
์ง๊ณ ์์ ์ ํต์ฌ์ ์ง๊ณ ์ฐ์ฐ์ด๋ค. ๊ฒ์ ์ฟผ๋ฆฌ ๋ฌธ์ ๋ด์ฉ์ด ํต์ฌ์ด ์๋๋ค.
๊ฒ์ ์ฟผ๋ฆฌ์์ ๋ถํ์ํ ๋ฌธ์๋ค์ ๋ฐํํ์ง ์๊ธฐ ๋๋ฌธ์ ์์คํ ์ ์ฑ๋ฅ์ ์ต์ ํ ๊ฐ๋ฅ
์ง๊ณ ์์ ์ ๊ฒ์ ์ฟผ๋ฆฌ์ ๋งค์นญ๋ ๋ชจ๋ ๋ฌธ์์ ๋ํด ์ํ -> ๊ณผ๋ํ ์์ด ๋ ์ ์๋ค.
๋ฐ๋ผ์ ํต์ ๋์ง ์์ ์ฌ์ฉ์์๊ฒ ํค๋ฐ๋๋ฅผ ์ด์ง ๋ง์์ผ ํ๋ค. ์ฌ์ฉ๋์ด ๋ง์์ก์ ๊ฒฝ์ฐ์ ๋ถํ๋ฅผ ์๊ฐํด์ผํจ
- ๋ฉํธ๋ฆญ ์ง๊ณ: ์ฐ์ ์ฐ์ฐ
- avg, max, min, sum
- stats: count, min, max, avg, sum์ ํ๋ฒ์ ๋ฐํํ๋ ๋ค์ค ๊ฐ ์ซ์ ๋ฉํธ๋ฆญ ์ง๊ณ
- cardinality: ์ง์ ํ ํ๋๊ฐ ๊ฐ์ง ๊ณ ์ ํ ๊ฐ์ ๊ฐ์๋ฅผ ๊ณ์ฐํ์ฌ ๋ฐํ + precision_threshold ์ต์ ์ผ๋ก ์ ํ๋ ์กฐ์ , ์ต์ข cardinality๋ณด๋ค ๋๋ค๋ฉด ์ ํ๋๊ฐ ์ถฉ๋ถํ๋ค.
- ๋ฒํท์ง๊ณ: ๋ฌธ์๋ฅผ ํน์ ๊ธฐ์ค์ผ๋ก ์ฌ๋ฌ ๋ถ๋ถ์งํฉ์ผ๋ก ๋๋. ์ด ๋ถ๋ถ์งํฉ์ ๋ฒํท์ด๋ผ ํ๋ค. ๋ฒํท์ ํฌํจ๋ ๋ฌธ์๋ฅผ ๋์์ผ๋ก ๋ณ๋์ ํ์ ์ง๊ณ ์ํ๊ฐ๋ฅ
- ๋ฌธ์ ์ ์ฒด์ ๋ํด ์ฌ๋ฌ ๊ตฌ๊ฐ์ ๋ฒํท์ผ๋ก ๋ถํ ํ๊ณ , ๊ฐ ๋ฒํท์ ๋ํ ํ์ ์ง๊ณ๋ฅผ ์ํํ๋ ๊ฒ์ด ํต์ฌ. ๋ฒํท์ ๋ฒํท์ ๋ฒํท์ ๊ณ์ ์์ฑ ๊ฐ๋ฅํ๋ ์ ๋นํ ํ์ ์ง๊ณ ๊น์ด๋ฅผ ์ง์ ํด์ผ ํ๋ค.
- ์๋ผ์คํฑ์์น๋ ์ค๋์ ์ง๊ณ ์์ฒญ ๋ถ์ฐ๋์ด ๋ค์ด์ค๋ฉด ์ค๋ ์์ฒญ ์บ์์ ์ ์ฅํ์๋ค๊ฐ, ๋์ผํ ์ง๊ณ์์ฒญ์ ์ฌ์ฉํ๋ค.
- range: ์ง์ ํ ํ๋๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ ์ํ๋ ๋ฒํท ๊ตฌ๊ฐ์ผ๋ก ์ชผ๊ฐฌ. ๊ฒฝ๊ณ ๊ธฐ์ค๊ฐ์ ์ง์
- date_range: date ํ์ ํ๋๋ฅผ ๋์์ผ๋ก ํ range ์ง๊ณ, now๊ฐ ํฌํจ๋ ์ง๊ณ ์์ฒญ์ ๋น์ฐํ ์บ์๋์ง ์์.
- histogram: ์ง์ ํ ํ๋๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ ์ํ๋ ๋ฒํท ๊ตฌ๊ฐ์ผ๋ก ์ชผ๊ฐฌ. ๋ฒํท์ ๊ฐ๊ฒฉ์ ์ง์ . interfval, offset
- date_histogram: date ํ์ ํ๋๋ฅผ ๋์์ผ๋ก ํ histogram ์ง๊ณ. calendar_interval, fixed_interval ์ฌ์ฉ
- terms: ์ง์ ํ๋์ ๋ํ ๊ฐ์ฅ ๋น๋์๊ฐ ๋์ term ์์๋๋ก ๋ฒํท ์์ฑ.
- ์๋ฅผ ๋ค์ด, "์นดํ ๊ณ ๋ฆฌ" ํ๋์์ ["A", "B", "A", "C", "B", "A"]๊ฐ ์๋ค๋ฉด, terms ์ง๊ณ๋ A, B, C ์์ผ๋ก ๊ฐ์ฅ ๋น๋ ๋์ ๊ฐ์ ๋์ด
๊ฐ ์ค๋์์ size๊ฐ์๋งํผ term์ ๋ฝ์ ๋น๋์๋ฅผ ์ธ๋๋ฐ, ๊ฐ ์ค๋์์ ์ํ๋ ๊ณ์ฐ์ ํ๊ณณ์ผ๋ก ๋ชจ์ ํฉ์ฐํํ size ๊ฐ์๋งํผ ๋ฒํท์ ๋ฝ๋๋ค. ๋ฐ๋ผ์ size ๊ฐ์์ ๊ฐ ๋ฌธ์์ ๋ถํฌ์ ๋ฐ๋ผ ๊ทธ ๊ฒฐ๊ณผ๊ฐ ์ ํํ์ง ์์ ์๋ ์๋ค.
terms ์ง๊ณ๋ ์์ term์ ๋ฝ์์ ์ง๊ณ๋ฅผ ์ํํ๋ค. ์ ๋ถ ์ํํ์ฌ ์ง๊ณํ๋ ค๋ฉด size๋ฅผ ๋๋ฆฌ๋ ๋ฐฉ์๋ณด๋ค composite ์ง๊ณ ์ฌ์ฉ์ ๊ถ์ฅ
- ์๋ฅผ ๋ค์ด, 3๊ฐ์ ์ค๋์ ๋ฐ์ดํฐ๊ฐ ๋ถ์ฐ๋์ด ์๊ณ , size = 3์ผ๋ก ์์ 3๊ฐ์ term์ ๋ฝ๋ ์ง๊ณ๋ฅผ ์์ฒญํ๋ค๊ณ ๊ฐ์
- ์ค๋ 1: ["A", "B", "A"]์์ ์์ 3๊ฐ term์ A, B.
- ์ค๋ 2: ["A", "C"]์์ ์์ 3๊ฐ term์ A, C.
- ์ค๋ 3: ["B", "A", "B"]์์ ์์ 3๊ฐ term์ B, A.
๊ฐ ์ค๋๋ ์์ ์ด ์ฒ๋ฆฌํ ์ ์๋ ๋ฌธ์๋ค๋ง ๋ณด๊ณ ์์ 3๊ฐ term์ ๋ฝ๊ธฐ ๋๋ฌธ์, ์ ์ฒด ๋ฐ์ดํฐ๋ฅผ ์ข ํฉํ ๊ฒฐ๊ณผ์์ ์์ size๊ฐ์ term์ด ์ ํํ ๋ฐ์๋์ง ์์ ์ ์๋ค.
์๋ฅผ ๋ค์ด, A๊ฐ ์ค์ ๋ก๋ ๊ฐ์ฅ ๋ง์ด ๋ฑ์ฅํ์ง๋ง, ์ค๋ 2์์๋ A๊ฐ ์์ 3๊ฐ ์์ ํฌํจ๋์ง๋ง, B๋ ๋ค๋ฅธ ์ค๋์์ ๋ ๋ง์ด ๋ฑ์ฅํ์ฌ ์ต์ข ์ง๊ณ์์ B๊ฐ ๋ ๋ง์ด ๋ฑ์ฅํ๋ ๊ฒ์ฒ๋ผ ๋ํ๋ ์ ์๋ค.
composite: sources๋ก ์ง์ ๋ ํ์ ์ง๊ณ์ ๋ฒํท ์ ๋ถ๋ฅผ ํ์ด์ง๋ค์ด์ ํ์ฌ ์ํ
ํ์ดํ๋ผ์ธ์ง๊ณ: ๋ค๋ฅธ ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ง๊ณ ๋์์ผ๋ก ํ๋ค. bucket_path ์ธ์๋ฅผ ํตํด ๋ค๋ฅธ ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์๋๊ฒฝ๋ก๋ก ๊ฐ์ง๊ณ ์์ ์ฌ์ฉ
ex) "ํ๋งค์ก"์ ๊ธฐ์ค์ผ๋ก ์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋งค์ก ํฉ๊ณ๋ฅผ ์ง๊ณํ ํ, ๊ทธ ๊ฐ์ ์ด์ฉํด ์นดํ ๊ณ ๋ฆฌ๋ณ ํ๋งค์ก์ ๋์ ํฉ์ด๋ ์ต๋ ํ๋งค์ก์ ๊ฐ์ง ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๊ตฌํ ์ ์๋ค.
> ํ์ ์ง๊ณ๋ก ์ด๋, . ํ์ ๋ฉํธ๋ฆญ์ผ๋ก ์ด๋
cumulative_sum: ๋ค๋ฅธ ์ง๊ณ ๊ฐ์ ๋์ ํ์ฌ ํฉ์ฐ
max_bucket: ๋ค๋ฅธ ์ง๊ณ ๊ฒฐ๊ณผ๋ก ๊ทธ ๊ฒฐ๊ณผ๊ฐ ๊ฐ์ฅ ํฐ ๋ฒํท์ key, ๊ฒฐ๊ณผ๋ฅผ ๊ตฌํ๋ ์ง๊ณ
{
"aggs": {
"daily_sales": { // 1. ์ผ๋ณ ํ๋งค ์ง๊ณ ์์
"date_histogram": { // 2. ๋ ์ง๋ณ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ทธ๋ฃนํ
"field": "date", // ๋ ์ง ํ๋๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ทธ๋ฃนํ
"interval": "day" // ํ๋ฃจ ๋จ์๋ก ์ง๊ณ
},
"aggs": { // 3. ํ์ ์ง๊ณ ์ ์
"total_sales": { // 4. ๊ฐ ๋ ์ง์ ํ๋งค์ก ํฉ๊ณ
"sum": { // 5. ํ๋งค์ก ํ๋์ ํฉ์ฐ
"field": "sales" // "sales" ํ๋์ ๊ฐ์ ํฉ์ฐ
}
},
"cumulative_sales": { // 6. ํ๋งค์ก ๋์ ํฉ ์ง๊ณ
"cumulative_sum": { // 7. ๋์ ํฉ ๊ณ์ฐ
"buckets_path": "total_sales" // 8. "total_sales" ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ฌ์ฉ
}
}
}
}
}
}
"date" ํ๋์ ๋ํด date_histogram์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ผ๋ณ๋ก ๊ทธ๋ฃนํํ๊ณ , ๊ทธ ์์์ ๊ฐ ๋ ์ง๋ณ ํ๋งค์ก ํฉ๊ณ(total_sales)๋ฅผ ๊ตฌํ๋ค.
๊ทธ๋ฐ ๋ค์, cumulative_sum์ ์ฌ์ฉํ์ฌ ๊ฐ ๋ ์ง๋ณ ํ๋งค์ก ํฉ๊ณ์ ๋์ ํฉ์ ๊ณ์ฐํ๋ค.
'๐ฐ์ฐ๋ฆฌ FISA > ๋น ๋ฐ์ดํฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Pandas ์ ๋ฆฌ (0) | 2025.01.10 |
---|---|
NumPy ์ ๋ฆฌ (0) | 2025.01.10 |
๋น ๋ฐ์ดํฐ ์ปค๋ฆฌ์ด ๊ฐ์ด๋๋ถ(2) (0) | 2024.12.24 |
๋น ๋ฐ์ดํฐ ์ปค๋ฆฌ์ด ๊ฐ์ด๋๋ถ(1) (2) | 2024.12.24 |