μ΄ λ¬Έμλ Elasticsearchμμ λ§€ν(mapping)μ ν¨μ¨μ μΌλ‘ μ€κ³νκΈ° μν νκ³Ό κ°λ
λ€μ
http://localhost:9200/contents κΈ°μ€μΌλ‘ μ€λͺ
ν©λλ€.
1. π― λ§€ν μ€κ³ μνλ ν
π§Ή λΆνμν νλ μ κ±°
- μ μ₯ν νμκ° μλ λ°μ΄ν°λ λ§€ν μ체λ₯Ό νμ§ μκ±°λ
_sourceμμ μ μΈ - κ²μ/νν°λ§/μ§κ³μ μ°μ΄μ§ μλ λ°μ΄ν°λ μ μΈνλ κ²μ΄ μ±λ₯μ μ 리
π§· νμ
λͺ
νν μ§μ
| λ°μ΄ν° μμ | μ μ ν νμ
|
|---|
| λ μ§ | date |
| μ μ | integer |
| κ°κ²© | float |
| μ΄λ©μΌ, URL | keyword |
| λ³Έλ¬Έ, μ€λͺ
, μ λͺ© | text |
π« λμ λ§€ν(auto mapping) μ£Όμ
- μ€μ νμ§ μμΌλ©΄ μλμΌλ‘
text + keywordλ‘ λ§€νλ¨ β μμΉ μλ λΆμκΈ° μ μ© κ°λ₯μ± - λͺ
μμ μΈ λ§€ν μ μ κΆμ₯
2. βοΈ text vs keyword
| νλͺ© | text | keyword |
|---|
| λΆμ μ¬λΆ | λΆμλ¨ (tokenizer, filter μ μ©) | λΆμλμ§ μμ (μ μ²΄κ° κ·Έλλ‘) |
| κ²μ λͺ©μ | μ λ¬Έ(full-text) κ²μ | μ νν μΌμΉ, μ§κ³/μ λ ¬/νν°μ© |
| μμ νλ | μ λͺ©, λ΄μ©, λκΈ | ID, μ΄λ©μΌ, νκ·Έ, μΉ΄ν
κ³ λ¦¬ |
3. π multi-field μ λ΅
π§ νλμ νλλ₯Ό μ¬λ¬ λ°©μμΌλ‘ νμ©
μ: title νλλ₯Ό κ²μλ νκ³ , μ λ ¬/μ§κ³λ νλ €λ©΄?
"title": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
title: λΆμλ text νλ β κ²μμ©title.raw: keyword νλ β μ λ ¬/μ§κ³μ©
4. π§© object vs nested μ°¨μ΄
object (ννν ꡬ쑰)
"author": {
"type": "object",
"properties": {
"name": { "type": "text" },
"email": { "type": "keyword" }
}
}
- μ₯μ : κ°λ¨ν¨
- λ¨μ : λ°°μ΄μΌ κ²½μ° κ°μ λ§€μΉ μ€λ₯ λ°μ κ°λ₯
nested (κ΄κ³ 보μ₯)
"comments": {
"type": "nested",
"properties": {
"user": { "type": "keyword" },
"content": { "type": "text" }
}
}
- μ₯μ : κ°κ°μ λ°°μ΄ μμκ° λ
립μ μΈ λ¬Έμμ²λΌ μ²λ¦¬λμ΄ μ νν λ§€μΉ κ°λ₯
- λ¨μ : μΏΌλ¦¬κ° μ½κ° 볡μ‘ν¨
π§Ύ μμ½ μ 리
| μ λ΅ νλͺ© | ν΅μ¬ μμ½ |
|---|
| νλ μ΅μν | κΌ νμν νλλ§ μ μ₯ |
| νμ
λͺ
νν | μ«μ/λ μ§/ν
μ€νΈ νμ
κ΅¬λΆ |
| text vs keyword | κ²μ vs μ λ ¬/μ§κ³μ© κ΅¬λΆ |
| multi-field μ¬μ© | νλμ νλλ₯Ό μ¬λ¬ μ©λλ‘ νμ© (text + keyword) |
| nested ꡬ쑰 νμ© | λ°°μ΄ λ΄ κ΄κ³λ₯Ό μ νν 보μ₯ν΄μΌ ν κ²½μ° μ¬μ© |