ElasticSearch
ν΄λ¬μ€ν° λλ¬λ³΄κΈ°
1. Cluster
REST API
λ
Έλ λ° ν΄λ¬μ€ν°μ ν΅μ νλ λ°©λ²μ μμλ³Ό μ°¨λ‘μ΄λ€. ES λ ν΄λ¬μ€ν°μμ μνΈ μμ©μ μ¬μ©ν μ μλ λ§€μ° ν¬κ΄μ μ΄κ³ κ°λ ₯ν REST API
λ₯Ό μ 곡νλ€. μ΄ API μμ λ€μμ λΉλ‘―ν λ€μν μμ
μ μνν μ μλ€.
- Cluster, Node, Index μ μν λ° ν΅κ³ μ 보 νμΈ
- Cluster, Node, Index μ λ°μ΄ν° λ° λ©νλ°μ΄ν° κ΄λ¦¬
- Indexμ λν CRUD λ° κ²μ μμ μν
- paging, sort, filtering, scripting, aggregation λ± μ¬λ¬ κ³ κΈ κ²μ μμ μ€ν
# index(DB/Table μμ±)
PUT user
# νμ¬ index 리μ€νΈ νμΈνκΈ°
GET _cat/indices
# index μ λ ν리카 κ°μ 0κ°λ‘ λ§λ€μ΄ Yellow > Green μνλ‘ λ§λ€κΈ°
PUT _settings
{
"index": {
"number_of_replicas": 0
}
}
# νμ¬ index 리μ€νΈ μ¬νμΈνκΈ°
GET _cat/indices
# index μ document μΆκ°νκΈ° (ID ν¬ν¨)
POST user/_doc/1
{
"name": "kangjaegu"
}
# index μ document μΆκ°νκΈ° (ID λ―Έν¬ν¨)
POST user/_doc/
{
"name": "kangjaegu2"
}
# λͺ¨λ Document μ‘°ννκΈ°
GET user/_search
# νΉμ Document μ‘°ννκΈ°
GET user/_doc/1
# document μμ
POST user/_doc/1
{
"name": "kangjaegu_modified"
}
# μμ λ Document μ¬νμΈ
GET user/_doc/1
############################################################
# example Indexκ° μλ μνμμ example μΈλ±μ€ λ°μ΄ν°λ₯Ό μΆκ°νλ©΄ μλμΌλ‘
# example indexκ° μμ±λκ³ , 맀νλλ€
GET _cat/indices
PUT example/_doc/1
{
"content": "test"
}
GET example/_doc/1
GET _cat/indices
# 맀νμ μ
# λμ 맀ν λ°©μμΌλ‘ κ°μ₯ λμ ννμ λ°μ΄ν° νμ
μΌλ‘ 맀νμ μμ±νλκ² μλλΌ,
# 미리 μ μ ν΄λκ³ μΆλ€λ©΄ μλμ κ°μ λ°©μμ μ¬μ©νλ©΄ λλ€.
# μ΄λ―Έ λ§λ€μ΄μ§ 맀νμ νλ μΆκ°λ κ°λ₯
# μ΄λ―Έ λ§λ€μ΄μ§ νλλ₯Ό μμ νκ±°λ νλμ νμ
λ° μ€μ κ°μ λ³κ²½νλ λΆκ°λ₯
# (νλμ λ³κ²½μ΄ νμν κ²½μ° re-indexing νμ)
PUT user
{
"mappings": {
"properties": {
"name": {
"type": "text"
}
}
}
}
# index μλ‘ λ§λ€κΈ° (+mapping κ³Ό ν¨κ»)
PUT /test_index
{
"mappings": {
"properties": {
"text_name":{
"type": "text"
},
"keyword_name": {
"type":"keyword"
}
}
}
}
# μλ‘ λ§λ test_index ꡬ쑰 νμΈνκΈ°
GET /test_index
# λ§λ index μ λ°μ΄ν° λ£κΈ°
PUT /test_index/_doc/1
{
"text_name":"I am jaegu.",
"keyword_name":"I am jaegu."
}
# μλ£νμ Keyword λ‘ λ£μκ²μ κ²μλμ§ μλλ€.
GET /test_index/_search
{
"query": {
"match": {"keyword_name": "jaegu"}
}
}
# μλ£νμ Text λ‘ λ£μκ²μ μ κ²μλλ€.
GET /test_index/_search
{
"query": {
"match": {"text_name": "jaegu"}
}
}
############################################################
# Inter μλ£νμ μ μ₯νκΈ° μν test_index λ₯Ό λ€μ λ§λ€μ΄λ³΄μ.
# Field λ long_num μ΄κ³ , λ°μ΄ν°νμ
μ long, μ«μλ‘ μ΄ν΄ν μμλνμμ μ«μλ‘μ μ₯ "4" > 4
PUT /test_num
{
"mappings": {
"properties": {
"long_num": {
"type": "long",
"coerce": true
}
}
}
}
# index DDL νμΈνκΈ°
GET /test_num
# index data νμΈνκΈ°
GET /test_num/_search
# index_num μ λ°μ΄ν° λ£κΈ°
PUT /test_num/_doc/1?pretty
{
"long_num": 4.3
}
# λ°μ΄ν° κ°μ Έμ€κΈ°
# long_num νλμ κ°μ΄ 3 <= data < 4.2 κ°μ μμ²νλλ°, κ²μμ΄ λλ€?
# coerce=True μ΄κΈ° λλ¬Έμ 4.3 > 4 λ‘ μ μ₯λμκΈ° λλ¬Έμ΄λ€.
GET /test_num/_search
{
"query": {
"range": {
"long_num": {
"gte": 3,
"lt":4.2
}
}
}
}
2. μλ£νμ μ’ λ₯
λ¬Έμμ΄
- Text
- μ λ ₯λ λ¬Έμμ΄μ ν λ¨μλ‘ μͺΌκ°μ΄ βμ μμΈβ κ΅¬μ‘°λ‘ λ§λ¬
- Full Text κ²μμ μ¬μ©ν λ¬Έμμ΄ νλ
- Keyword
- μ λ ₯λ λ¬Έμμ΄μ νλμ ν ν°μΌλ‘ μ μ₯
- Text νμ μ keyword λΆμκΈ°λ₯Ό μ μ©ν κ²κ³Ό λμΌ
- μ§κ³ λλ μ λ ¬μ μ¬μ©
μ«μ
- long
- 64λΉνΈ μ μ
- integer
- 32λΉνΈ μ μ
- short
- 16λΉνΈ μ μ
- byte
- 8λΉνΈ μ μ
- double
- 64λΉνΈ μ€μ
- float
- 32λΉνΈ μ€μ
- half_float
- 16λΉνΈ μ€μ
- scaled_float
- μ€μνμ΄μ§λ§, λΆλμμμ μ΄ μλλΌ longννλ‘ μ μ₯νκ³ μ΅μ μΌλ‘ μμμ μμΉλ₯Ό μ§μ
λ μ§
- ISO8601 νμμ λ°λΌ μ λ ₯
- β2019-06-02β, β2019-06-12T17:13:40β, β2019-06-12T17:13:40+09.00β μΌλ‘ μ λ ₯λ κ²½μ° μλμΌλ‘ λ μ§ νμ μΌλ‘ μΈμ
- μμ κ°μ νμμ΄ μλ κ²½μ°μλ text, keywordλ‘ μ μ₯
λΆλ¦¬μΈ
- true
- false
κ°μ²΄(Object)
- 1λ² μ μ
"user" : [
{"name" : "soyeon","age" : 21,"phone" : "01012341234"},
{"name" : "test","age" : 15,"phone" : "01015155555"}
]
- 2λ² μ μ
"user" : [
{"name" : "chae","age" : 30,"phone" : "01012341234"},
{"name" : "soyeon","age" : 19,"phone" : "01019191919"}
]
μμ κ°μ΄ μ μ₯λμ΄ μμ λ. μλμ κ°μ Query λ₯Ό μ‘°ννκ²λλ€λ©΄,
GET /test_game/_search
{
"query": {
"bool": {
"mmust": [
{
"match": {
"user.name": "jaegu"
}
},
{
"match": {
"user.phone": "01012341234"
}
}
]
}
}
}
User.nameμ΄ jaegu μ΄λ©΄μ, user.phone μ΄ 01012341234 μΈ Document λ§ κ²μμ΄ λκ² μ§λΌκ³ κΈ°λνμ§λ§,,,
μ€μ λ‘λ 2κ°μ Document λͺ¨λ κ²μλλκ²μ νμΈν μ μλ€.
μ΄μ λ μμμΈ λλ¬Έ μ΄λ€.
Nested
Geo
- Geo Point
- Geo Shape
λκΈλ¨κΈ°κΈ°