์๋ผ์คํฑ์์น ๊ฐ์ด๋
์ฉ์ด ์ ๋ฆฌ
๐ก ๊ฐ๋
ES์ ๊ฐ๋ ์ฉ์ด
- ์์ธ (
indexing) : ๋ฐ์ดํฐ๊ฐ ๊ฒ์๋ ์ ์๊ฒ ์๋ณธ์ ํ ํฐ์ผ๋ก ๋ณํํ์ฌ ์ ์ฅํ๋ ๊ณผ์ - ์ธ๋ฑ์ค (
index,indices) : ์์ธ ๊ณผ์ ์ ๊ฑฐ์น ๊ฒฐ๊ณผ๋ฌผ, ์์ธ๋ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋๋ ์ ์ฅ์ โ ๋ํ๋จผํธ๋ค์ ์งํฉ - ๊ฒ์ (
search) : ์ธ๋ฑ์ค์ ๋ค์ด์๋ ๊ฒ์์ด ํ ํฐ๋ค์ ํฌํจํ๊ณ ์๋ ๋ํ๋จผํธ๋ฅผ ์ฐพ์๊ฐ๋ ๊ณผ์ - ์ง์ (
query) : ์ฌ์ฉ์๊ฐ ์ํ๋ ๋ํ๋จผํธ๋ฅผ ์ฐพ๊ฑฐ๋ ์ง๊ณ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๊ธฐ ์ํด ๊ฒ์ ์ ์ ๋ ฅํ๋ ๊ฒ์์ด ๋๋ ๊ฒ์ ์กฐ๊ฑด - ๋ํ๋จผํธ (
document) : ์๋ณธ๋ฐ์ดํฐ๋ฅผ ์์ธ ๊ณผ์ ์ ํตํด ์์ธ๋ ๋ฐ์ดํฐ, ๋ฌธ์๋ผ๊ณ ์นญํ๊ธฐ๋ ํจ, ๊ฒ์ ๊ฒฐ๊ณผ์ ์ฌ๋ฌ ๊ฐ์ ๋ํ๋จผํธ ์ถ๋ ฅ โ ๋จ์ผ ๋ฐ์ดํฐ ๋จ์
๐ก ๊ตฌ์กฐ
ES์ ๊ตฌ์กฐ ๊ด๋ จ๋ ์ฉ์ด
- ํด๋ฌ์คํฐ๋ง : ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ฆ๊ฐ์ ๋ฐ๋ฅธ ์ค์ผ์ผ ์์๊ณผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์ง โ 1๊ฐ์ ๋ฌผ๋ฆฌ์๋ฒ ๋ง๋ค ํ๋์ ๋ ธ๋๋ฅผ ์คํํ๋ ๊ฒ์ ๊ถ์ฅ
- ๋์ค์ปค๋ฒ๋ฆฌ : ๋
ธ๋๊ฐ ์ฒ์ ์คํ ๋ ๋ ๊ฐ์์๋ฒ, ๋๋
discovery.seed_hosts: [ ]์ ์ค์ ๋ ๋คํธ์ํฌ ์์ ๋ค๋ฅธ ๋ ธ๋๋ค์ ์ฐพ์ ํ๋์ ํด๋ฌ์คํฐ๋ก ๋ฐ์ธ๋ฉํ๋ ๊ณผ์ - ์ค๋ (
shard) : ๋ฃจ์ฌ์ ๋จ์ผ ๊ฒ์ ์ธ์คํด์ค, ์ธ๋ฑ์ค๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค๋๋ผ๋ ๋จ์๋ก ๋ถ๋ฆฌ๋๊ณ ๊ฐ ๋ ธ๋์ ๋ถ์ฐ๋์ด ์ ์ฅ - ํ๋ผ์ด๋จธ๋ฆฌ ์ค๋ (
primary shard) : ์ฒ์ ์์ฑ๋ ์ค๋ - ๋ณต์ ๋ณธ (
replica) : ๋ณต์ ๋ณธ - ๋ง์คํฐ ๋
ธ๋ (
master node) : ์ค๋์ ์์น์ ๊ฐ์ ํด๋ฌ์คํฐ ์ํ ์ ๋ณด๋ฅผ ๊ด๋ฆฌํ๋ ๋ ธ๋ - ๋ฐ์ดํฐ ๋ ธ๋ : ์ค์ ๋ก ์์ธ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์๋ ๋ ธ๋
- Split Brain : ๋ฐ์ดํฐ ์ ํฉ์ฑ, ๋ฌด๊ฒฐ์ฑ ์ ์ง๋ฅผ ์ํด ๋ง์คํฐ ํ๋ณด ๋ ธ๋๋ฅผ 3๊ฐ ์ด์์ ํ์๋ก ๊ตฌ์ฑ
ํด๋ฌ์คํฐ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ฒ ๋๋ฉด ์ค๋๋ค์ด ๊ฐ ๋ ธ๋๋ค๋ก ๋ถ์ฐ๋๋ฉฐ, ๋ํดํธ๋ก 1๊ฐ์ ๋ณต์ ๋ณธ ์์ฑ
โ ์ค๋์ ๋ณต์ ๋ณธ์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ ์์ผ๋ฉฐ ๋ฐ๋์ ์๋ก ๋ค๋ฅธ ๋ ธ๋์ ์ ์ฅ
๋จ, ๋
ธ๋๊ฐ 1๊ฐ๋ง ์๋ ๊ฒฝ์ฐ ๋ณต์ ๋ณธ์ ์์ฑ๋์ง ์์ → ์ต์ 3๊ฐ์ ๋
ธ๋๋ก ๊ตฌ์ฑ ํ ๊ฒ์ ๊ถ์ฅ
๐ก ์ฟผ๋ฆฌ
ES์ ๊ฒ์ ์ฟผ๋ฆฌ ์ฉ์ด
ํ ํ
์คํธ ์ฟผ๋ฆฌ (FULL TEXT QUERY)
match_all: ๋ณ๋ค๋ฅธ ์กฐ๊ฑด์์ด ํด๋น ์ธ๋ฑ์ค์ ๋ชจ๋ ๋ํ๋จผํธ๋ฅผ ๊ฒ์ํ๋ ์ฟผ๋ฆฌmatch: ๊ฒ์์ด๊ฐ ํฌํจ๋์ด ์๋ ๋ํ๋จผํธ ๊ฒ์match_phrase: ๊ฒ์์ด๊ฐ ๊ณต๋ฐฑ์ ํฌํจํด ์ ํํ ์ผ์นํ๋ ๋ด์ฉ์ ๊ฒ์
๋ณตํฉ ์ฟผ๋ฆฌ (Bool Query) : ์ฌ๋ฌ ์ฟผ๋ฆฌ ์กฐํฉ
must: ์ฟผ๋ฆฌ๊ฐ ์ฐธ์ธ ๋ํ๋จผํธ๋ฅผ ๊ฒ์must_not: ์ฟผ๋ฆฌ๊ฐ ๊ฑฐ์ง์ธ ๋ํ๋จผํธ๋ฅผ ๊ฒ์should: ๊ฒ์ ๊ฒฐ๊ณผ ์ค ์ฟผ๋ฆฌ์ ํด๋น๋๋ ๋ํ๋จผํธ์ ์ ์๋ฅผ ๋์filter: ์ฟผ๋ฆฌ๊ฐ ์ฐธ์ธ ๋ํ๋จผํธ๋ฅผ ๊ฒ์ํ์ง๋ง ์ค์ฝ์ด๋ฅผ ๊ณ์ฐํ์ง ์์ (must๋ณด๋ค๊ฐ ๊ฒ์ ์๋๊ฐ ๋น ๋ฅด๊ณ ์บ์ฑ์ด ๊ฐ๋ฅ)
๋ฒ์ ์ฟผ๋ฆฌ (Range Query) : ์ซ์ ๋ ์ง ๊ฒ์
gte(Greater-than or equal to) : ์ด์ (๊ฐ๊ฑฐ๋ ํผ)gt(Greater-than) : ์ด๊ณผ (ํผ)lte(Less-than or equal to) : ์ดํ (๊ฐ๊ฑฐ๋ ์์)lt(Less-than) : ๋ฏธ๋ง (์์)
์ ํ๋ (Relevancy) : ๊ด๋ จ์ฑ ์ฐ๊ด์ฑ
score์ ์ : ๊ฒ์๋ ๊ฒฐ๊ณผ๊ฐ ์ผ๋ง๋ ๊ฒ์ ์กฐ๊ฑด๊ณผ ์ผ์นํ๋์ง๋ฅผ ๋ํ๋ด๋ฉฐ ์ ์๊ฐ ๋์ ์์ผ๋ก ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์คTF(Term Frequency): ๋ํ๋จผํธ ๋ด์ ๊ฒ์๋ ํ (Term)์ด ๋ง์์๋ก ์ ์๊ฐ ๋์์ง๋ ๊ฒIDF(Inverse Document Frequency): ๊ฒ์ํ ํ (Term)์ ํฌํจํ๊ณ ์๋ ๋ํ๋จผํธ ๊ฐ์๊ฐ ๋ง์ ์๋ก ์ ์๊ฐ ๊ฐ์ํ๋ ๊ฒField Length: ๋ํ๋จผํธ์์ ํ๋ ๊ธธ์ด๊ฐ ํฐ ํ๋ ๋ณด๋ค๋ ์งง์ ํ๋์ ์๋ ํ ์ด ํฌํจ ๋ ์๋ก ์ ์๊ฐ ๋์์ง
๐ก ์ธ๋ฑ์ฑ
ES์ ์ธ๋ฑ์ฑ ๊ด๋ จ ์ฉ์ด
- ์ญ ์ธ๋ฑ์ค (Inverted Index) : ์ถ์ถ๋ ํ
(Term)์ผ๋ก ๋ํ๋จผํธ
id๋ฅผ ๊ฐ์ ธ์ฌ ์ ์์ - ์ ๋๋ผ์ด์ (Analyzer) : ๋ฌธ์์ด ํ๋๊ฐ ์ ์ฅ๋ ๋ ๋ฐ์ดํฐ์์ ๊ฒ์์ด ํ ํฐ์ ์ ์ฅํ๋ ์ฒ๋ฆฌ๊ณผ์ ์ ํ ์คํธ ๋ถ์(Text Analysis)๋ผ๊ณ ํ๋ฉฐ ์ด ๊ณผ์ ์ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฅ์ ๋ปํ๋ค.
- ์บ๋ฆญํฐ ํํฐ : ์ ์ฒด ๋ฌธ์ฅ์์ ํน์ ๋ฌธ์๋ฅผ ๋์น, ์ ๊ฑฐ ๊ณผ์ ์ ๋ด๋นํ๋ ๊ธฐ๋ฅ
- ํ ํฌ๋์ด์ : ์ ์ฒด ๋ฌธ์ฅ์ ์ํ ๋จ์ด๋ค์ ํ ๋จ์๋ก ํ๋์ฉ ๋ถ๋ฆฌ ํด ๋ด๋ ์ฒ๋ฆฌ ๊ณผ์ ์ ๋ด๋นํ๋ ๊ธฐ๋ฅ
์ ๋๋ผ์ด์ ๊ตฌ์ฑ
: 0 - 3๊ฐ์ ์บ๋ฆญํฐ ํํฐ(Character Filter)์ 1๊ฐ์ ํ ํฌ๋์ด์ (Tokenizer), 0 - N(Token Filter)๊ฐ์ ํ ํฐ ํํฐ๋ก ์ด๋ฃจ์ด์ ธ ์์
์ธ๋ฑ์ค ์ค์ : settings
number_of_shards: ์ค๋ ๊ฐ์ ์ค์ number_of_replicas: ๋ณต์ ๋ณธ ๊ฐ์ ์ค์ refresh_interval: ์ธ๊ทธ๋จผํธ๊ฐ ๋ง๋ค์ด์ง๋ ๋ฆฌํ๋ ์ ํ์
์์ ํ๋ข ํ๋ฌ๊ทธ์ธ : ํํ์ ๋ถ์๊ธฐ
user_words: ์ฌ์ฉ์ ์ฌ์ user_dict_path: ์ฌ์ฉ์ ์ฌ์ ํ์ผdecompound: ๋ณตํฉ๋ช ์ฌ ๋ถํด (๋ํดํธtrue)deinflect: ํ์ฉ์ด์ ์ํ ์ถ์ถ (๋ํดํธtrue)index_eojeol: ์ด์ ์ถ์ถ (๋ํดํธtrue)index_poses: ์ถ์ถํ ํ์ฌ (๋ํดํธ["N", "SL", "SH", "XR", "V", "M", "UNK"])pos_tagging: ํ์ฌํ๊น , ํค์๋์ ํ์ฌ๋ฅผ ๋ถ์ฌ์ ํ ํฐ์ ๋ฝ์ (๋ํดํธtrue)max_unk_length:unknownํค์๋๋ก ๋ฝ์ ์ ์๋ ์ต๋ ๊ธธ์ด (๋ํดํธ8)
- ์ฌ์ฉ์ ์ฌ์ ์ ํ๋๋ง ํ์ฉ๋์ด ์ฌ๋ฌ ๊ฐ์ ํ ํฌ๋์ด์ ๋ฅผ ์์ฑํด๋ ๋ง์ง๋ง ๋ก๋๋ ์ฌ์ ์ผ๋ก ์ ์ง
user_words์user_dict_path๋ฅผ ํจ๊ป ์ค์ ํ ๊ฒฝ์ฐuser_words๋ฌด์pos_tagging์ดtrue์ผ ๊ฒฝ์ฐ ํค์๋์ ํ์ฌ๊ฐ ํจ๊ป ํ ํฐ์ผ๋ก ๋์ค๊ธฐ ๋๋ฌธ์stopword,synonymํํฐ ์ฌ์ฉ์ ์ ์ฉ ์๋จ
index_poses
1. UNK : ๋ฏธ์ง์ด
2. EP : ์ ์ด๋ง์ด๋ฏธ
3. E : ์ด๋ฏธ
4. I : ๋
๋ฆฝ์ธ
5. J : ๊ด๊ณ์ธ
6. M : ์์์ธ
7. N : ์ฒด์ธ
8. S : ๋ถํธ
9. SL : ์ธ๊ตญ์ด
10. SH : ํ์
11. SN : ์ซ์
12. V : ์ฉ์ธ
13. VCP : ๊ธ์ ์ง์ ์ฌ
14. XP : ์ ๋์ฌ
15. XS : ์ ๋ฏธ์ฌ
16. XR : ์ด๊ทผ
์ธ๋ฑ์ค ๋งคํ : mappings
- ๋งคํ์์ ํ๋๋ค์
propertiesํญ๋ชฉ์ ์๋์ ์ง์ - ๋งคํ์ ์ง์ ํ์ง ์๊ณ ๋ํ๋จผํธ๋ฅผ ์ ์ฅํ๋ฉด ์๋์ผ๋ก ๋งคํ ์ค์ โ ํ๋ ํ์ ์ ๋ค์ด๊ฐ๋ ์ค ๋ฐ์ดํฐ ๋ณด๋ค ํฐ ๋ฒ์๋ก ์ง์ ์ด ๋จ
๐ก ๋งคํ ํ๋
ES์ ํ๋ ๊ด๋ จ ์ฉ์ด
- ๋ฌธ์์ด
text: ์ ๋ ฅ๋ ๋ฌธ์์ด์ ํ ๋จ์๋ก ์ชผ๊ฐ์ด ์ญ ์์ธ (ํ ํ ์คํธ ๊ฒ์์ ์ฌ์ฉํ ๋ฌธ์์ด ํ๋ ๋ค์textํ์ ์ผ๋ก ์ง์ )analyzer: ์์ธ์ ์ฌ์ฉํ ์ ๋๋ผ์ด์ (๋ํดํธstandard) โ ํ ํฌ๋์ด์ , ํ ํฐํํฐ๋ค์ ๋ฐ๋ก ์ง์ ํ ์๊ฐ ์์ (์ธ๋ฑ์ค ๋งคํ์์ ์ค์ )search_analyzer: ์์ธ์ ์ฌ์ฉํ ์ ๋๋ผ์ด์ ๊ฐ ์๋ ๊ฒ์ ์์๋ง ์ ์ฉ๋๋ ์ ๋๋ผ์ด์ โnGram์ผ๋ก ์์ธ์ ํ์ ๋๋ ์ง์ ํด์ฃผ๋ ๊ฒ์ด ์ ์ index:false๋ก ์ค์ ํ๋ฉด ํด๋น ํ๋๋ ๊ฒ์์ด ๋ถ๊ฐ๋ฅ (๋ํดํธtrue)boost: ํํ ์คํธ ๊ฒ์ ์ 1๋ณด๋ค ๋์ผ๋ฉด ํด๋น ํ๋ ์ค์ฝ์ด ์ ์์ ๊ฐ์ค์น ๋ถ์ฌ, 1๋ณด๋ค ๋ฎ์ผ๋ฉด ๊ฐ์ค์น ๊ฐ์ (๋ํดํธ1)fielddata:true๋ก ์ค์ ํ๋ฉด ํด๋น ํ๋์ ์์ธ๋ ํ ์ ๊ฐ์ง๊ณ ์ง๊ณ(aggregation-kibana) ๋๋ ์ ๋ ฌ(sorting)์ด ๊ฐ๋ฅ (๋ํดํธfalse)
fielddata๋ฅผtrue๋ก ์ค์ ์ด ๋๋ฉด ์ฟผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ๋ง์์ ธ ๊ถ์ฅํ์ง ์์ โkeywordํ๋๋ก ์ฌ์ฉ ๊ถ์ฅ
keyword: ์ ๋ ฅ๋ ๋ฌธ์์ด์ ํ๋์ ํ ํฐ์ผ๋ก ์ ์ฅ, ์ง๊ณ(aggregation) ๋๋ ์ ๋ ฌ(sorting)์ ์ฌ์ฉํ ๋ฌธ์์ด ํ๋๋ฅผ ์ง์
์ต์
( index, boost ์ต์
์ textํ์
๊ณผ ๋์ผ )
1. `doc_values` : `false`๋ก ์ค์ ์ ์ง๊ณ์ ์ ๋ ฌ ์ค์ ์๋จ (๋ํดํธ `true`)
2. `ignore_above` : ์ค์ ๋ ๊ธธ์ด ์ด์์ ๋ฌธ์์ด์ ์์ธ์ ํ์ง ์์ ๊ฒ์์ด๋ ์ง๊ณ ๋ถ๊ฐ๋ฅ (๋ํดํธ `2,147,483,647`)
3. `nomarlizer` : `keyword` ํ์
์ ์ ๋๋ผ์ด์ ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๋์ ์ฌ์ฉ โ ํ ํฌ๋์ด์ ๋ ์ ์ฉ์ด ์๋๋ฉฐ, ์บ๋ฆญํฐ ํํฐ์ ํ ํฐ ํํฐ๋ง ์ ์ฉํด์ ์ฌ์ฉ ๊ฐ๋ฅ
- ์ซ์
long: 64๋นํธ ์ ์integer: 32๋นํธ ์ ์short: 16๋นํธ ์ ์byte: 8๋นํธ ์ ์double: 64๋นํธ ์ค์float: 32๋นํธ ์ค์half_float: 16๋นํธ ์ค์scaled_float: ์ค์ํ์ด์ง๋ง ๋ถ๋์์์ ์ด ์๋๋ผlongํํ์ด๋ฉฐ ์ต์ ์ผ๋ก ์์์ ์์น ์ง์ โ ํตํ ๊ฐ์ด ์์์ ์๋ฆฌ๊ฐ ๊ณ ์ ๋ ๊ฐ์ผ๋ ์ฌ์ฉ
์ต์
( index, boost, doc_values ์ต์
์ text, keywordํ์
๊ณผ ๋์ผ )
1. `coerce` : ๊ธฐ๋ณธ์ ์ผ๋ก ์ซ์๋ก ์ดํด๋ ์ ์๋ ๊ฐ๋ค์ ์ซ์๋ก ๋ณ๊ฒฝ (๋ํดํธ `true`)
2. `null_value` : ํ๋๊ฐ์ด ์
๋ ฅ๋์ง ์๊ฑฐ๋ `null`์ผ ๋ ๋ํดํธ ๊ฐ ์ง์
3. `ignore_malformed` : `true`๋ก ์ค์ ํ๋ฉด ์ซ์๊ฐ ์๋ ๊ฐ์ด ๋ค์ด์๋ ์ ์ (๋ํดํธ `false`) โ ๊ฒ์์ด๋ ์ง๊ณ์์๋ ๋ฌด์
4. `scaling_factor` (`scaled_float` ํ์
์์๋ง ์ฌ์ฉ) : ์์์ ๋ช ์๋ฆฌ๊น์ง ์ ์ฅํ ์ง ์ง์
- ๋ ์ง
date:epoch_millisํํ์long๋ฐ์ดํฐ ์ ๋ ฅ ๊ฐ๋ฅ
์ต์
( `index`, `null_value`, `ignore_malformed` ์ต์
์ ๋ค๋ฅธ ํ์
๊ณผ ๋์ผ )
1. `format` : ์
๋ ฅ ๊ฐ๋ฅํ ๋ ์ง ํ์์ `||`๋ก ๊ตฌ๋ถ
- ๋ถ๋ฆฌ์ธ -
boolean
boolean
์ต์
( `index`, `doc_values` ์ต์
์ ๋ค๋ฅธ ํ์
๊ณผ ๋์ผ )
1. `null_value` : ํ๋๊ฐ์ด ์
๋ ฅ๋์ง ์๊ฑฐ๋ `null`์ผ ๋ ๋ํดํธ ๊ฐ ์ง์
- Object - ํ ํ๋ ์์ ํ์ ํ๋๋ฅผ ๋ฃ๋
object
objectํ๋ ์ ์ธ ํ ๋๋properties๋ฅผ ์ ๋ ฅํ๊ณ ๊ทธ ์๋์ ํ์ ํ๋ ์ด๋ฆ๊ณผ ํ์ ์ง์ objectํ๋๋ฅผ ์ฟผ๋ฆฌ๋ก ๊ฒ์ ํ๊ฑฐ๋ ์ง๊ณ ํ ๋${ํ๋๋ช }.${ํ์ํ๋๋ช }
๋ฐฐ์ด(
array) ํ์ ์ ํ๋๋ฅผ ์ ์ธํ์ง ์์
- Nested - object ํ์ ํ๋์ ์๋ ์ฌ๋ฌ ๊ฐ์ object ๊ฐ๋ค์ด ์๋ก ๋ค๋ฅธ ์ญ ์์ธ ๊ตฌ์กฐ
nested
- Geo : ๋ํ๋จผํธ ์ ๋ ฅํ๊ธฐ ์ ์ ์ธ๋ฑ์ค ๋งคํ ์ ์ ํ์
geo_point: ์๋ ๊ฒฝ๋ ๋๊ฐ์ ๊ฐ์ ๊ฐ์ง 1์ฐจ์ ๋ฐ์ดํฐ์
geo_bounding_box ์ฟผ๋ฆฌ ์ต์
: ๋ฐ์ ๋ ์ต์
์ ๊ธฐ์ค์ผ๋ก ํ๋ ๋ค๋ชจ ์์ญ ์์ ์๋ ๋ํ๋จผํธ๋ฅผ ๊ฐ์ ธ์ด
1. `top_left`
2. `bottom_right`
geo_distance ์ฟผ๋ฆฌ ์ต์
: ๋ฐ์ ์ต์
๊ฐ์ ์ด์ฉํ์ฌ ๋ฐ๊ฒฝ์ ์ ์์ ์๋ ๋ํ๋จผํธ๋ฅผ ๊ฐ์ ธ์ด
1. `distance`
geo_shape: ์ , ๋ฉด ๋ฑ์ 2์ฐจ์ ๊ฐ โ ๋ํ๋จผํธ ์ ๋ ฅ์ ์ , ์ , ๋ค์ค์ , ๋ค๊ฐํ ๋ฑ์type์ ๋ช ์
coordinates ๊ฐ์ [๊ฒฝ๋, ์๋] ๋ฐฐ์ด ํ์์ผ๋ก ์
๋ ฅ
๋ํ๋จผํธ ์
๋ ฅ ์ type
point: ๋จ์ผ ์ (geo_point์ ๊ฐ์ ์ฉ๋)multipoint: ์ฌ๋ฌ ์ ์ ํ๋์ ๊ฐ์ผ๋ก ์ ์ฅ, ์ ๋ค์ ๋ฐฐ์ด๋ก ์ ๋ ฅlinestring: ์ 2๊ฐ ๊ฐ์ ๋ฐฐ์ด๋ก ์ ๋ ฅ, ์ง์ ์ ์ ์ฅmultilinestring: ์ฌ๋ฌ๊ฐ์ ์ง์ ์ ๋ฐฐ์ด๋ก ์ ์ฅpolygon: ๋ฐฐ์ด์ ์์๋๋ก ์ ์ ์ด์ด ๋ค๊ฐํ ์ง์ โ ๋ฐฐ์ด ๋ง์ง๋ง ๊ฐ = ๋ฐฐ์ด ์ฒ์ ๊ฐmultipolygon: ์ฌ๋ฌ๊ฐ์ ๋ค๊ฐํ์ ๋ฐฐ์ด๋ก ์ ์ฅenvelope: ์ข์ธก ์๋จ ์ ๊ณผ ์ฐ์ธก ํ๋จ ์ ๋๊ฐ๋ก ์ง์ฌ๊ฐํ์ ์ ์ฅ
geo_shape ์ฟผ๋ฆฌ ์ต์
: shape์ ๊ฒ์ํ ์์ญ์ type, coordinates, relation ์ผ๋ก ๊ฒ์
relation
intersects: ์ฟผ๋ฆฌ ์์ญ์ ์กฐ๊ธ์ด๋ผ๋ ๊ฑธ์ณ์๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผwithin: ์ฟผ๋ฆฌ ์์ญ์ ์์ ํ ํฌํจ๋์ด์๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผdisjoint: ์ฟผ๋ฆฌ ์์ญ ๋ฐ๊นฅ์ ์๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผ
IP : IP ์ฃผ์ ํ์
ip
๋ฒ์ (Range) : ์ซ์๋ ๋ ์ง, IP (
gt,gte,lt,lte๋ก ๊ฐ ์ ๋ ฅ)
integer_rangefloat_rangelong_rangedouble_rangedate_rangeip_rangerange์ฟผ๋ฆฌ ์ต์
relation
within: ๋ํ๋จผํธ ๋ฒ์ ๊ฐ์ด ์ฟผ๋ฆฌํ ๋ฒ์ ์์ ์์ ํ ํฌํจ๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผ
contains:within๊ณผ ๋ฐ๋๋ก ์ฟผ๋ฆฌ ๋ฒ์๊ฐ ๋ํ๋จผํธ ๋ฒ์ ์์ ์์ ํ ํฌํจ๋๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผintersects: ๋ํ๋จผํธ ๋ฒ์ ๊ฐ๊ณผ ์ฟผ๋ฆฌ ๋ฒ์์ ๊ณตํต์ ์ธ ๋ถ๋ถ์ด ์๋ ๋ํ๋จผํธ ๊ฒฐ๊ณผ
- Binary : ์์คํ ํ์ผ์ด๋ ์ด๋ฏธ์ง ์ ๋ณด ๊ฐ์ ๋ฐ์ด๋๋ฆฌ ๊ฐ ์ ์ฅ โ ์์ธ์ด ๋์ง ์์ ๊ฒ์์ด๋ ์ง๊ณ ๋ถ๊ฐ๋ฅ
binary
- ๋ฉํฐ ํ๋ (Multi Field) : ํ๋์ ํ๋๊ฐ๋ง ์์ง๋ง, ํ๋์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ ์ญ ์์ธ ํ์ฌ ์ ์ฅ ๊ฐ๋ฅํ ํ๋
๐ก ์ง๊ณ (Aggregation)
ํค๋ฐ๋ ๋์๋ณด๋์์ ์ฌ์ฉ
aggregations๋ง ์ฌ์ฉํ๋ ๊ฒฝ์ฐsize๋ฅผ 0์ผ๋ก ์ธํ ํ๋ฉด ์ฟผ๋ฆฌ ์ฑ๋ฅ์ด ์ข์์ง
์ข ๋ฅ
metrics: ์ซ์ ๋๋ ๋ ์ง ํ๋์ ๊ฐ์ ๊ฐ์ง๊ณ ๊ณ์ฐ
minmaxsumavgstats: ์์ ๊ฐ๋ค์ ๋ชจ๋ ๊ฐ์ ธ์ค๊ณcount๊น์ง ํ๋ฒ์ ๊ฐ์ ธ์ค๋ ์ต์ cardinality: ํ๋์ ๊ฐ์ด ๋ช ์ข ๋ฅ์ธ์ง ๊ตฌํ ์ ์์ โtextํ๋์์ ์ฌ์ฉ ๋ถ๊ฐํ๋ฉฐ, ์ซ์ ํ๋๋keyword,ipํ๋ ๋ฑ์ ์ฌ์ฉ ๊ฐ๋ฅpercentiles: ๊ฐ๋ค์ ๋ฐฑ๋ถ์๋ก ์ถ๋ ฅ (๋ํดํธ 1%, 5%, 25%, 50%, 75%, 95%, 99% ๊ตฌ๊ฐ) โ ๊ตฌ๊ฐ ์ค์ ์percents์ต์ ์ฌ์ฉpercentile_ranks: ๋ฐ๋๋ก ๊ฐ์ ์ ๋ ฅํด์ ๊ทธ ๊ฐ์ด ์์น ํด ์๋ ๋ฐฑ๋ถ์ ์ถ๋ ฅ
bucket: ๋ฒ์๋keyword๊ฐ ๋ฑ์ ๊ฐ์ง๊ณ ๋ํ๋จผํธ๋ค์ ๊ทธ๋ฃนํvalues์ ๊ฐ ์ ๋ ฅ
range: ์ซ์ ํ๋ ๊ฐ์ผ๋ก ๋ฒ์๋ฅผ ์ง์ ํ๊ณ , ๊ฐ ๋ฒ์์ ํด๋นํ๋ ๋ฒํท์ ๋ง๋ฌfield: ํ๋๋ชranges: ๋ฐฐ์ด๋กfrom,to๊ฐ ์ธํ
histogram:range์ ๋ง์ฐฌ๊ฐ์ง๋ก ์ซ์ ํ๋์ ๋ฒ์field: ํ๋๋ชinterval: ๊ฐ๊ฒฉ ํฌ๊ธฐ
date_range,date_histogram: ๋ ์ง ํ๋๋ฅผ ์ด์ฉํด์ ๋ฒ์ ์ง์
calendar_interval์ต์ :day,month,week๊ฐ๊ฒฉ ์ง์ ๊ฐ๋ฅ
fixed_interval: ์ ํํ ๊ตฌ๋ถ๋๋ ๋ ์ง (์์ : 30์ผ -30d)
terms:keywordํ๋์ ๋ฌธ์์ด ๋ณ๋ก ๊ทธ๋ฃนํ
ํ์(
sub-aggregations) :bucket์ผ๋ก ๋ง๋ ๋ด๋ถ์bucket๋๋metrics์์ฑ ๊ฐ๋ฅ
->depth๊ฐ ๊น์ด์ง ์๋ก ์์ ๋๊ณผ ๋ฉ๋ชจ๋ฆฌ ์๋ชจ๋์ด ์ปค์ ธ ์ค๋ฅ ๋ฐ์์ ๊ฐ๋ฅ์ฑ
pipeline: ๋ค๋ฅธmetrics aggregation์ ๊ฒฐ๊ณผ๋ฅผ ์๋ก์ด ์ ๋ ฅ์ผ๋ก ํ๋ ๊ธฐ๋ฅ
min_bucketmax_bucketavg_bucketsum_bucketstats_bucketmoving_avg: ์ด๋ ํ๊ทderivative: ๋ฏธ๋ถ๊ฐcumulative_sum: ๊ฐ์ ๋์ ํฉbuckets_path: ์ฌ์ฉํ ๋ฒํท ์ง์ โ>๋ฅผ ์ฌ์ฉํด์ ์ง์ ๊ฐ๋ฅ (์ :๋ถ๋ชจ๋ฒํท>์๋ ๋ฒํท)
๐ก ๊ฒฐ๊ณผ
ES ๊ฒ์ RESPONSE ์ฉ์ด
took: ์์ฒญ ์๊ฐ (mills)timed_out:true์ผ ๊ฒฝ์ฐ ์๊ฐ ์ด๊ณผ_shards: ์์ฒญ๋ ์ค๋์ ๊ฐ์total: ์ค๋์ ์ด ๊ฐ์successful: ์์ฒญ์ด ์ฑ๊ณต๋ ์ค๋์ ์skipped: ์์ฒญ์ ๊ฑด๋ ๋ด ์ค๋์ ์failed: ์์ฒญ์ด ์คํจํ ์ค๋์ ์
hits: ๋ํ๋จผํธ ๋ฐ ๋ฉํ๋ฐ์ดํฐ ํฌํจtotal: ๋ํ๋จผํธ์ ๊ฐ์์ ๋ํ ๋ฉํ๋ฐ์ดํฐvalue: ๋ํ๋จผํธ ์ด ๊ฐ์relation: ๊ฐ์์ ๋ํ ๊ด๊ณeq:total.value์ ์ผ์นgte:total.value๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์
max_score:_score์ ์ต๋๊ฐhits: ๋ํ๋จผํธ ์งํฉ_index: ์ธ๋ฑ์ค ๋ช_id: ๋ํ๋จผํธ ID_score: ๊ฒ์ ์ ์_source: ๋ํ๋จผํธJSON
๊ธฐ๋ฅ ์ ๋ฆฌ
๐ ์ธ๋ฑ์ฑ
ES ์์ธ ๊ด๋ จ ๊ธฐ๋ฅ
์ ๋๋ผ์ด์
_analyze: ์ ๋๋ผ์ด์ API๋ฅผ ์ด์ฉํ์ฌ ๋ถ์๋ ๋ฌธ์ฅ์ ํ์ธ ํ ์ ์์_termvectors: ํ ๋ฐฑํฐAPI๋ฅผ ์ด์ฉํด์ ์ญ ์ธ๋ฑ์ค ๋ด์ฉ ํ์ธ ๊ฐ๋ฅ- ์ธ๋ฑ์ค์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ์ ๋ํ ์ค์ ์ ์ ๋๋ผ์ด์ ๋ง ์ ์ฉ ๊ฐ๋ฅ โ ์ ๊ณต๋๋ ์ ๋๋ผ์ด์ ๋ณด๋ค๋ ์ฌ์ฉ์ ์ ์ ์ ๋๋ผ์ด์ ๋ฅผ ์ฃผ๋ก ์ฌ์ฉ
standard: ๋งคํ์ ์๋ฌด ์ค์ ์ ํ์ง ์๋ ๊ฒฝ์ฐ ๋ํดํธ๋ก ์ ์ฉ๋๋ ์ ๋๋ผ์ด์
์บ๋ฆญํฐ ํํฐ
html_strip:HTMLํ๊ทธ ๋ฐ ๋ฌธ๋ฒ ์ฉ์ด๋ค์ ์ ๊ฑฐ
ํ ํฌ๋์ด์
whitespace: ๊ณต๋ฐฑ๋ง์ผ๋ก ๊ธฐ์ค์ผ๋ก ํ ๋ค์ ๋ถ๋ฆฌstandard: ๊ณต๋ฐฑ์ผ๋ก ํ ์ ๊ตฌ๋ถํ๋ฉด์ ํน์๋ฌธ์ ์ ๊ฑฐletter: ์ํ๋ฒณ์ ์ ์ธํ ๋ชจ๋ ๊ณต๋ฐฑ, ์ซ์, ๊ธฐํธ๋ค์ ๊ธฐ์ค์ผ๋ก ํ ์ ๋ถ๋ฆฌuax_url_email: ์ด๋ฉ์ผ ์ฃผ์์ URL ๊ฒฝ๋ก๋ ๋ถ๋ฆฌํ์ง ์๊ณ ํ๋์ ํ ์ผ๋ก ์ฒ๋ฆฌpath_hierarchy: ๊ฒฝ๋ก ๋ฐ์ดํฐ๋ฅผ ๊ณ์ธต๋ณ๋ก ์ ์ฅํด์ ํ์ ๋๋ ํ ๋ฆฌ์ ์ํ ๋ํ๋จผํธ๋ฅผ ์์ค๋ณ๋ก ๊ฒ์ ๊ฐ๋ฅ
ํ ํฐ ํํฐ
lowercase: ๋๋ฌธ์๋ฅผ ์๋ฌธ์๋ก ๋ณ๊ฒฝstop: a, an, are, at, the โฆ ๋ถ์ฉ์ด๋ก ๊ฐ์ฃผ๋์ด ๊ฒ์์ด ํ ํฐ์์ ์ ์ธ โ ์ธ์ดํฉ์ ์๋ ๋ถ์ฉ์ด ์ง์ ๊ฐ๋ฅ (ํ์ค์ผ์ ์๋จ)snowball: ~s, ~ing .. ์ ๊ฐ์ด ๋ฌธ๋ฒ์ ๋ณํ๋ ๋จ์ด๋ฅผ ์ผ๋ฐ์ ์ผ๋ก ๊ฒ์์ ์ฐ์ด๋ ๊ธฐ๋ณธ ํํ๋ก ๋ณํsynonym: quick, fast ๋์์ด๋ฅผ ์ถ๊ฐ ํด ์ฃผ๋ ๊ธฐ๋ฅnGram: ๋น ๋ฅธ ๊ฒ์์ ์ํด ๊ฒ์์ ์ฌ์ฉ๋ ํ ๋ค์ ๋ฏธ๋ฆฌ ๋ถ๋ฆฌํด์ ์ญ ์ธ๋ฑ์ค์ ์ ์ฅ โ ๊ฒ์ ๊ฒฐ๊ณผ๋ณด๋ค ์๋์์ฑ ๊ธฐ๋ฅ์ ์ ํฉedgeNGram: ์ ์ชฝ์nGram๋ง ์ ์ฅshingle: ๋ฌธ์๊ฐ ์๋๋ผ ๋จ์ด ๋จ์๋ก ๊ตฌ์ฑ๋ ๋ฌถ์ (nGram์ ๋ฌธ์ ๋จ์๋ก ๋ฌถ์)unique: ์ค๋ณต๋๋ ํ ๋ค์ ํ๋๋ง ์ ์ฅ
๐ ๋ํ๋จผํธ
ES ๋ํ๋จผํธ ์ ๋ ฅ ๊ธฐ๋ฅ
๐ ๊ฒ์
ES ๊ฒ์ ๊ธฐ๋ฅ
- ์ผํ๋ก ๋์ดํด์ ์ฌ๋ฌ ์ธ๋ฑ์ค๋ฅผ ๊ฒ์ํ๊ฑฐ๋
*๋ฅผ ์ด์ฉํด์ ๊ฒ์ ๊ฐ๋ฅ - ๋ฐ๋์ ํ๋๋ช ์ ํตํด ์ฟผ๋ฆฌํ๋ ๊ฒ์ด ์ด์์ ์ด๋ค.
match๊ฒ์ ์,AND์กฐ๊ฑด์ผ๋ก ๊ฒ์ํ๋ ค๋ฉดoperator์ต์ ์ฌ์ฉmatch_phrase๊ฒ์ ์,slop์ต์ ์ ์ฌ์ฉํ๋ฉด ๊ฒ์์ด ์ค๊ฐ์ ์ค์ ํslop๊ฐ์ ๊ฐ์๋งํผ์ ๋ค๋ฅธ ๋จ์ด๊ฐ ๋ค์ด์ฌ ์ ์์should๋match_phrase์ ํจ๊ป ์ ์ฉํ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ, ์ ํํ ์ผ์นํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋งจ ์์์ ๋ ธ์ถterm์ฟผ๋ฆฌmatch์ฟผ๋ฆฌ์ ์ ์ฌํ์ง๋ง ์ ๋๋ผ์ด์ ๋ฅผ ์ ์ฉํ์ง ์๊ณ ๊ฒ์์ด ๊ทธ๋๋ก ์ผ์นํ๋ ํ ์ ๊ฒ์- ${ํ๋๋ช
}.keyword ๊ฒ์ : ์ค์ฝ์ด๋ฅผ ๊ณ์ฐํ์ง ์์ผ๋ฉฐ ์ ํ๊ฐ์ ์ผ์น ์ฌ๋ถ๋ง์ ํ๋จ โ ์ฌ์ฉ์ ์ค์ฝ์ด์ ์ํฅ์ ์ฃผ์ง ์์
filter๊ตฌ๋ฌธ์์ ๋ฃ์ด์ ์ฌ์ฉ - ๋ฒ์ ์ฟผ๋ฆฌ (Range Query) : ์ค์ฝ์ด๋ฅผ ๊ณ์ฐํ์ง ์์
filter๊ตฌ๋ฌธ์์ ๋ฃ์ด์ ์ฌ์ฉ - ํ์ด๋ผ์ดํธ ๋ ์ฟผ๋ฆฌ ํ๊ทธ ์ค์ ๊ฐ๋ฅ
- ์ฌ์ด์ฆ (๋ํดํธ๊ฐ : 10)