๊ด๊ณํ DB | ElasticSearch
Database | Index
Table | Type
Row | Document
Column | Field
Index | Analyze
Primary key | _id
Schema | Mapping
Physical partition | Shard
Logical partition | Route
Relational | Parent/Child, Nested
SQL | Query DSL
- ํด๋ฌ์คํฐ(cluster)
-
ํด๋ฌ์คํฐ๋ Elasticsearch์์ ๊ฐ์ฅ ํฐ ์์คํ ๋จ์๋ฅผ ์๋ฏธํ๋ฉฐ, ์ต์ ํ๋ ์ด์์ ๋ ธ๋๋ก ์ด๋ฃจ์ด์ง ๋ ธ๋๋ค์ ์งํฉ
-
์๋ก ๋ค๋ฅธ ํด๋ฌ์คํฐ๋ ๋ฐ์ดํฐ์ ์ ๊ทผ, ๊ตํ์ ํ ์ ์๋ ๋ ๋ฆฝ์ ์ธ ์์คํ
-
์ฌ๋ฌ ๋์ ์๋ฒ๊ฐ ํ๋์ ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํ ์ ์๊ณ , ํ ์๋ฒ์ ์ฌ๋ฌ ๊ฐ์ ํด๋ฌ์คํฐ๊ฐ ์กด์ฌํ ์๋ ์์
- ๋ ธ๋(node)
-
Elasticsearch๋ฅผ ๊ตฌ์ฑํ๋ ํ๋์ ๋จ์ ํ๋ก์ธ์ค
-
์ญํ ์ ๋ฐ๋ผ Master-eligible, Data, Ingest, Tribe ๋ ธ๋๋ก ๊ตฌ๋ถ ๊ฐ๋ฅ
- ์ธ๋ฑ์ค(index) / ์ค๋(Shard) / ๋ณต์ (Replica)
์ธ๋ฑ์ค(index)๋ ๊ด๊ณํ DB์์ Database์ ๋์ํ๋ ๊ฐ๋
-
์ค๋(Shard): ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํด์ ์ ์ฅํ๋ ๋ฐฉ๋ฒ. ์ธ๋ฑ์ค๋ฅผ ์ฌ๋ฌ ์ค๋๋ก ์ชผ๊ฐ ๊ฒ์ผ๋ก ๊ธฐ๋ณธ์ ์ผ๋ก 1๊ฐ๊ฐ ์กด์ฌ. ๊ฒ์ ์ฑ๋ฅ ํฅ์์ ์ํด ํด๋ฌ์คํฐ์ ์ค๋ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๊ธฐ๋ํจ(ํ๋)
-
๋ณต์ (Replica): ๋ ๋ค๋ฅธ ํํ์ ์ค๋. ๋ ธ๋๋ฅผ ์์คํ์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ ์ ๋ขฐ์ฑ์ ์ํด ์ค๋๋ค์ ๋ณต์ ํ๋ ๊ฒ. ์๋ก ๋ค๋ฅธ ๋ ธ๋์ ์กด์ฌํ ๊ฒ์ ๊ถ์ฅ.
-
Scale out ์ค๋(Shard)๋ฅผ ํตํด ๊ท๋ชจ๊ฐ ์ํ์ ์ผ๋ก ๋์ด๋ ์ ์์
-
๊ณ ๊ฐ์ฉ์ฑ ๋ณต์ (Replica)๋ฅผ ํตํด ๋ฐ์ดํฐ์ ์์ ์ฑ์ ๋ณด์ฅ
-
Schema Free JSON ๋ฌธ์๋ฅผ ํตํด ๋ฐ์ดํฐ ๊ฒ์์ ์ํํ๋ฏ๋ก ์คํค๋ง ๊ฐ๋ ์ด ์์
-
Restful ๋ฐ์ดํฐ CRUD ์์ ์ HTTP Restful API๋ฅผ ํตํด ์ํ
Data CRUD | Elasticsearch Restful | SQL CREATE | POST | INSERT READ | GET | SELECT UPDATE | PUT | UPDATE DELETE | DELETE | DELETE
PUT, POST(๋งคํ์ด๋ ๋ฐ์ดํฐ ์ฝ์ )๋ ์๊ฒฉํ๊ฒ ๊ตฌ๋ถํ์ง ์๋๋
Elasticsearch๋ฅผ ์ค์นํ๊ณ ์คํํด๋ณด๋ฉด ํด๋ฌ์คํฐ๊ฐ 1๊ฐ ์กด์ฌํ๋ ๊ฒ์ ์ ์ ์๋ค.
$ curl -XGET localhost:9200/_cluster/health?pretty=true
curl ๋ช
๋ น์ด๊ฐ ์๋ํ์ง ์์ ๊ฒฝ์ฐ, sudo apt install curl
๋ช
๋ น์ด๋ฅผ ์ด์ฉํด curl ์ค์น
- ๋ ธ๋์ ํต์ ํ๋ ๋ฐฉ๋ฒ
- Elasticsearch๋ ํด๋ฌ์คํฐ์ ์ํธ์์ฉํ๋ ๋ฐ ์ฌ์ฉ๊ฐ๋ฅํ ๋งค์ฐ ํฌ๊ด์ ์ด๊ณ ๊ฐ๋ ฅํ REST API๋ฅผ ์ ๊ณต
- ์ํ ๊ฐ๋ฅํ ์์
- ํด๋ฌ์คํฐ, ๋ ธ๋, ์์ธ ์ํ, ์ํ ๋ฐ ํต๊ณ ํ์ธ
- ํด๋ฌ์คํฐ, ๋ ธ๋ ๋ฐ ์์ธ ๋ฐ์ดํฐ ๋ฐ ๋ฉํ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- CRUD(Create, Read, Update, Delete) ๋ฐ ์ธ๋ฑ์ค์ ๋ํ ๊ฒ์ ์์ ์ํ
- ํ์ด์ง, ์ ๋ ฌ, ํํฐ๋ง, ์คํฌ๋ฆฝํ , ์ง๊ณ ๋ฐ ๊ธฐํ ๊ณ ๊ธ ๊ฒ์ ์์ ์คํ
- ๊ตฌ์ฑ์์ 3๊ฐ์ง: ๋ฆฌ์์ค, ๋ฉ์๋, ๋ฉ์ธ์ง ๋ฉ์๋์ put get delete delete ์์(์น์์ put,get๋ง ์ฌ์ฉ ๊ฐ๋ฅ)
REST ์ ๋ณ๊ฐ๋ก elasticsearch๊ฐ ์ ๊ณตํ๋ api๊ฐ ์๋๋ฐ
GET/_cat/nodes?v
_cat :ํด๋ฌ์คํฐ ์ํ ํ์ธ์ํด ์ฌ์ฉ _search _update ์ด๋ฐ๊ฑฐ!
v: ์ปฌ๋ผ๋ช ๋ณด์ฌ์ค pretty: json ํ์ผ ๋ฐ์ผ๋ฉด ๋ณดํต ๋ค ๋ถ์ด์๋๋ฐ ์ด๊ฑธ ์ด์๊ฒ ๋ณด์ฌ์ค
ํด๋ฌ์คํฐ ์ํ ๋ น์: ํด๋ฌ์คํฐ๊ฐ ์์ ํ ์๋ ๋ ธ๋์: ๋ชจ๋ ๋ฐ์ดํฐ ์ฌ์ฉํ ์ ์์ง๋ง ์ผ๋ถ ๋ณต์ ๋ณธ์ด ํ ๋น์ด ์๋ ๊ฒฝ์ฐ(์ค๋ฉ ์๋๊ฒฝ์ฐ) ๋นจ๊ฐ์: ๋นจ๊ฐ์์ด๋ฉด ์ฌ์ฉ๋ถ๊ฐ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ฐ์ง ๋ฐ์ดํฐ ํ์ธ ๊ฐ๊ณ ์๋ ๋ชจ๋ ์ธ๋ฑ์ค ํญ๋ชฉ ์กฐํ(indices=index+es ๋ผ๊ณ ๋ณด๋ฉด๋จ)
GET/_cat_indices?v
(cat์ ๋
ธ๋ ์กฐํ ์๋ฏธ)
- elasticsearch ์ ์ธ๋ฑ์ฑ ๋ฐฉ์ ๊ด๊ณํ db์์์ ๊ฒ์ ๋ฐฉ์ + ์ฑ ๋ค์ ์๋ ์์ธ ๋ชฉ๋ก๊ณผ ์ ์ฌ(์ญํ์ผ ์์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ) ex)๋จ์ด, ๊ทธ ๋จ์ด๊ฐ ์๋ ํ์ด์ง ๋ฐ์ดํฐ๊ฐ ์ปค์ง๋ค๋ ๋จ์ ๋ ์์ง๋ง ๊ฒ์์ด ๋น ๋ฆ
- ์ปค๋งจ๋๋ผ์ธ์ curl ๋ช ๋ น์ด ์ฌ์ฉ -> ๋ถํธ
- postman ์์ฉ ํ๋ก๊ทธ๋จ ์ฌ์ฉ(window์์ ์ฃผ๋ก ์ฌ์ฉ)
- kibana์์ devtool ์ฌ์ฉ (์ฌ์ฉ)
- kibana์ ์ฐ์ฅ์์ด์ฝ ํด๋ฆญ(dev tool์)
- ์ ๋ ฅ
PUT ์๋ผ์คํฑ์์น์ฃผ์/์ธ๋ฑ์ค(๋ฐ์ดํฐ๋ฒ ์ด์ค)/ํ์
(ํ
์ด๋ธ)/document๋ฒํธ(_id) -d{๋ฉ์ธ์ง}
๋ฉ์ธ์ง๋ json ํํ๋ก ๋ค์ด๊ฐ์ผํจ(key value์ ์)
- ์กฐํ
GET ์๋ผ์คํฑ์์น์ฃผ์/์ธ๋ฑ์ค(๋ฐ์ดํฐ๋ฒ ์ด์ค)/ํ์
(ํ
์ด๋ธ)/document๋ฒํธ(_id)
- ์ญ์
DELETE ์๋ผ์คํฑ์์น์ฃผ์/์ธ๋ฑ์ค(๋ฐ์ดํฐ๋ฒ ์ด์ค)/ํ์
(ํ
์ด๋ธ)/document๋ฒํธ(_id)
- ์ ๋ฐ์ดํธ
POST ์๋ผ์คํฑ์์น์ฃผ์/์ธ๋ฑ์ค(๋ฐ์ดํฐ๋ฒ ์ด์ค)/ํ์
(ํ
์ด๋ธ)/document๋ฒํธ(_id)/_update -d{์์ ํ ๋ด์ฉ}
_update API ์ฌ์ฉ
์ฃผ์์ฐฝ์ ๋ ธ๋ ํ์ธ 127.0.0.1:9200/_cat/nodes?v ์ํ ํ์ธ 127.0.0.1:9200/_cat/health?v 127.0.0.1:5601
GET _cat/indices
POST customer/type1/1
{
"name": "yurim",
"age": 24
}
//์ ๋ฐฉ๋ฒ์ผ๋ก update๋ฅผ ํ๋ฉด ๋ฉ์ธ์ง์ ๋ด์ฉ์ผ๋ก ๋๊ท๋จผํธ ์ ์ฒด๊ฐ ๊ฐ์๋ผ์์ง
POST customer/type1/1/_update
{
"doc":{
"age":22
}
}
//์ ๋ฐฉ๋ฒ์ผ๋ก update๋ฅผ ํ๋ฉด ์์ ํ๊ณ ์ถ์ ๋ถ๋ถ๋ง ์์ ํ ์ ์์
"doc" ์ ๋ฌด์กฐ๊ฑด ๋ค์ด๊ฐ์ผํจ
document์์ ์ด๋ถ๋ถ์ ์์ ํ๊ฒ ๋ค ๋ผ๋ ๋ป
POST customer/type1/1/_update
{
"script":{
"inline": "if(ctx._source.age==24){ctx._source.age++}"
}
}
// ์์ฒ๋ผ ์คํฌ๋ฆฝํธ๋ฅผ ์ด์ฉํ์ฌ ๋ด์ฉ์ ์
๋ฐ์ดํธ ํ ์๋ ์์(์ฝ๋์ ์ธ๊ฒ)
// ํด๋น ๋ํ๋จผํธ ์ปจํ
์คํธ์ _source๋ถ๋ถ์ ์๋ age ํญ๋ชฉ์ ์์ ํ ๊ฒ
http ๋ฐฉ์(์์ฒญ, ์๋ต) ๋ฐ์ดํฐ๋ฅผ ํ๋ฒ์ ์ฌ๋ฌ๊ฐ ๋ณด๋ด๊ฒ ํ์ฌ ์ค๋ฒํค๋๋ฅผ ์ค์ฌ์ค ์ง๊ธ๊น์ง๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ณด๋๋๋ฐ _bulk API๋ฅผ ์ฌ์ฉํ์ฌ ์ฌ๋ฌ๊ฐ์ ๋ฌธ์๋ฅผ ๋ณด๋ด๋ณด๊ธฐ ์ค๊ฐ์ ์คํจํ๋๋ผ๋ ๋๋จธ์ง๋ ์ ์์ ์ผ๋ก ์คํ๋จ
- bulk ์ด์ฉ, ๋๊ฐ์ ๋ฐ์ดํฐ ๋ฃ๋ ์ (_id๋ ๊ท์น)
POST /customer/type1/_bulk
{"index":{"_id":"1"}}
{"name": "kim"}
{"index":{"_id":"2"}}
{"name": "lee"}
- bulk ์ด์ฉ ์ฌ๋ฌ๊ฐ์ update ์ฌํญ ๋ณด๋ด๊ธฐ(update, delete๋ฑ)
POST /customer/type1/_bulk
{"update": {"_id":"1"}}
{"doc": {"age": "18"}}
{"delete": {"_id":"2"}}
- url ๋ฐฉ๋ฒ
POST kibana_sample_data_flights/_search?q=*&sort=AvgTicketPrice
#์๋์ผ๋ก ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ์ด๋จ(sort์ default)
- ๋ณธ๋ฌธ์ ์ด์ฉํด ๊ฒ์ํ๋ ๋ฐฉ๋ฒ
POST kibana sample_data_flights/_search
{
"query": {"match_all":{}}, #๋ชจ๋ ๊ฒฐ๊ณผ ์กฐํ
"sort": {"AvgTicketPrice": "desc"},
"_source": ["AvgTicketPrice","FlightNum"]
#๋ณด์ฌ์ฃผ๊ณ ์ถ์ ํ๋๋ง ๋ณด์ฌ์ฃผ๊ฒํจ
}
POST kibana sample_data_flights/_search
{
"query": {"match_phrase":{"DestCountry": "AU"}}, #์กฐ๊ฑด์ ๋ง๋ ๊ฒฐ๊ณผ ์กฐํ
"sort": {"AvgTicketPrice": "desc"},
"_source": ["AvgTicketPrice","FlightNum", "DestCountry"]
#๋ณด์ฌ์ฃผ๊ณ ์ถ์ ํ๋๋ง ๋ณด์ฌ์ฃผ๊ฒํจ
}
๊ฒฐ๊ณผ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์กฐ๊ฑด์ด ์์ผ๋ฉด 10๊ฐ ํญ๋ชฉ๋ง ๋ณด์ฌ์ค(default)
์๋์ฒ๋ผ ๋ฐ๋์ ๋งค์นํ๋ ๊ฒ๊ณผ ๋งค์นํ์ง ์์์ผ ํ๋ ๊ฒ์ ์ง์ ํ์ฌ ๊ฒ์ํ ์๋ ์์
POST kibana_sample_date_flights/_search
{
"query":{
"bool":{
"must": {"match": {"DestCountry": "AU"}}, #์ฌ๊ธฐ์ []๋ก ์ฌ๋ฌ ์ต์
์ ์ค ์๋ ์์
"must_not": {"match": {"FlightNum": "9HY95MR"}
}
}
}
#์ค์ต ๋ชจ์
GET _search
{
"query": {
"match_all": {}
}
}
GET /_cat/health?v
GET /_cat/indices?v
POST /customer/type1/1
{
"name": "yurim"
}
GET /customer/type1/1
POST /customer/type1/_bulk
{"index":{"_id":"1"}}
{"name": "kim"}
{"index":{"_id":"2"}}
{"name": "lee"}
POST /customer/type1/_bulk
{"update": {"_id":"1"}}
{"doc": {"age": "18"}}
{"delete": {"_id":"2"}}
*** url ๋ฐฉ๋ฒ ๋ค์
GET kibana_sample_data_flights/_search?q=OriginWeather:Sunny AND DestCountry:AU&_source=OriginWeather,DestCountry,AvgTicketPrice&sort=AvgTicketPrice:desc
GET tourcompany/customerlist/_search?q=*
POST tourcompany/customerlist/1 { "name": "Alfred", "phone": "010-1234-5678", "holyday_dest": "Disneyland", "departure_date": "2017/01/20" }
POST tourcompany/customerlist/2 { "name": "Huey", "phone": "010-2222-4444", "holyday_dest": "Disneyland", "departure_date": "2017/01/20" }
POST tourcompany/customerlist/3 { "name": "Naomi", "phone": "010-3333-5555", "holyday_dest": "Hawaii", "departure_date": "2017/01/10" }
POST tourcompany/customerlist/4 { "name": "Andra", "phone": "010-6666-7777", "holyday_dest": "Bora Bora", "departure_date": "2017/01/11" }
POST tourcompany/customerlist/5 { "name": "Paul", "phone": "010-9999-8888", "holyday_dest": "Hawaii", "departure_date": "2017/01/10" }
POST tourcompany/customerlist/6 { "name": "Colin", "phone": "010-5555-4444", "holyday_dest": "Venice", "departure_date": "2017/01/16" }
#ํด์ฆ 1
#์๋ผ์คํฑ์์น CRUD๋ฌธ์ ์ ํด์ค #BoraBora ์ฌํ์ ๋ช ๋จ์ ์ญ์ ํ๋ผ DELETE tourcompany/customerlist/4
#Hawaii ๋จ์ฒด ๊ด๋๊ฐ ์ถ๋ฐ์ผ์ 2017/01/10 ์์ 2017/01/17๋ก ์์ ํ๋ผ POST tourcompany/customerlist/3/_update { "doc": { "departure_date": "2017/01/17" } }
POST tourcompany/customerlist/5/_update { "doc": { "departure_date": "2017/01/17" } }
#ํด์ผ ์ฌํ์ ๋์ฆ๋๋๋๋ก ๋ ๋๋ ์ฌ๋๋ค์ ํธ๋ํฐ ๋ฒํธ๋ฅผ ์กฐํํด๋ผ
#ํด์ฆ 2 ํด์ฆ1์์ ํ๋ ๋ฐ์ดํฐ๊ฐ ๋ค ๋ ๋ผ๊ฐ๋. ์ด๋ฅผ ๋๋น bulk๋ฐ์ดํฐ๋ฅผ ๋ง๋ค๊ณ api๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ก๋ํด๋ณด์ *์ฃผ์ ์ค๊ดํธ ์์ ๋ถ์ฌ์จ์ผํจ POST tourcompany/customerlist/_bulk {"index":{"_id":"1"}} {"name": "Alfred", "phone": "010-1234-5678", "holyday_dest": "Disneyland", "departure_date": "2017/01/20"} {"index":{"_id":"2"}} {"name": "Huey", "phone": "010-2222-4444", "holyday_dest": "Disneyland", "departure_date": "2017/01/20"} {"index":{"_id":"3"}} {"name": "Naomi", "phone": "010-3333-5555", "holyday_dest": "Hawaii", "departure_date": "2017/01/10"} {"index":{"_id":"4"}} {"name": "Andra", "phone": "010-6666-7777", "holyday_dest": "Bora Bora", "departure_date": "2017/01/11"} {"index":{"_id":"5"}} {"name": "Paul", "phone": "010-9999-8888", "holyday_dest": "Hawaii", "departure_date": "2017/01/10"} {"index":{"_id":"6"}} {"name": "Colin", "phone": "010-5555-4444", "holyday_dest": "Venice", departure_date": "2017/01/16"}
tourcompany ์ธ๋ฑ์ค์์ 010 3333 5555 ๋ฅผ ๊ฒ์ํ์ญ์์ค
GET tourcompany/customerlist/_search?q="010-3333-5555"
ํด์ผ ์ฌํ์ ๋์ฆ๋๋๋๋ก ๋ ๋๋ ์ฌ๋๋ค์ ํธ๋ํฐ ๋ฒํธ๋ฅผ ์กฐํํ์ญ์์ค (phone ํ๋๋ง ์ถ๋ ฅ
GET tourcompany/customerlist/_search?q="Disneyland"&_source=phone,holyday_dest
departure date ๊ฐ 2017 01 10 ๊ณผ 2017 01 11 ์ธ ์ฌ๋์ ์กฐํํ๊ณ ์ด๋ฆ ์์ผ๋ก ์ถ๋ ฅํ์ญ์์ค (name ๊ณผ departure date ํ๋๋ง ์ถ๋ ฅ GET tourcompany/customerlist/_search?q="2017/01/10" OR "2017/01/11"&_source=name, departure_date&sort=name.keyword
sort=nameํ๋ฉด ์๋ฌ๋ ๊ฒ ์๋ง nameํ๋๋ฅผ ๋ฌธ์์ด๋ก ์ธ์์ ๋ชปํ๋ ๋ฌธ์ ๊ฐ์(์๋ผ์คํฑ์์น ๋ฒ์ 6๋ถํฐ ๊ทธ๋ผ) name.keyword๋ก ์จ์ฃผ๊ธฐ
BoraBora ์ฌํ์ ๊ณตํญํ ๋ฌ ์ฌํ๋ก ์ทจ์๋์ต๋๋ค BoraBora ์ฌํ์์ ๋ช ๋จ์ ์ญ์ ํด์ฃผ์ญ์์ค
Bora Bora์ธ ์ ํ์ธ GET tourcompany/customerlist/_search?q="Bora Bora"
POST tourcompany/customerlist/_delete_by_query?q="Bora Bora"
Hawaii ๋จ์ฒด ๊ด๋๊ฐ์ ์์ฒญ์ผ๋ก ์ถ๋ฐ์ผ์ด ์กฐ์ ๋์ต๋๋ค 2017 01 10 ์ ์ถ๋ฐํ๋ Hawaii ์ ์ถ๋ฐ์ผ์ 2017 01 17 ์ผ๋ก ์์ ํด์ฃผ์ญ์์ค
์คํฌ๋ฆฝํธ ๋ฃ๊ธฐ
POST tourcompany/customerlist/_update_by_query { "script":{"inline":"ctx._source.departure_date='2017/01/17'", "lang":"painless"}, "query":{ "bool":{ "must":[ {"match": {"departure_date":"2017/01/10"}}, {"match": {"holyday_dest":"Hawaii"}} ] } } }
์์ค ์์ departure_date์ ํ๊ฒ ๋ค๋ ์๋ฏธ "lang":"painless"๋ language๊ฐ ๋ฌด์์ธ์ง ์๊ดํ์ง ์๊ณ ๋ผ๋ ํ์ ๊ฐ์๊ฒ์(์ค์x)
์คํํด๋ณด๋ฉด 2๊ฐ update ๋ ๊ฒ ํ์ธ ๊ฐ๋ฅ
kibana ์์ํ๊ธฐ ์ด๋ค index ํ์ํ ์ง ์ค์ ํด์ผํจ
http://127.0.0.1:9200/_cat/indices
ํ ๋น๋๋ฉ๋ชจ๋ฆฌ, ์ฌ์ฉ๋๊ณ ์๋๋ฉ๋ชจ๋ฆฌ
Management์์ kibana-index patterns create index pattern ์ด๋ค ์ธ๋ฑ์ค๋ฅผ ํ ๊ฒ์ธ๊ฐ -> Time Filter
time filter๋ ์๊ณ์ด (ํ์์๋ฆฌ์ฆ) ๊ด๋ จ ๋ฐ์ดํฐ ๋ถ์์์ ์๊ณ์ด ๋ฐ์ดํฐ ์๋๋ฐ ์๊ฐ์ ๋ฐ๋ผ ๋ถ์์ ํ ์ ์๋ ๋ฐ์ดํฐ : ์ฃผ์, ์์ธ, ๋ก๊ทธ ๋ฑ
์ด ์ ๋ฆฌ: ์ฐ๋ฆฌ๊ฐ ๋ง๋ ๋ฐ์ดํฐ์ ๊ฒฝ์ฐ index pattern์ ๋ฑ๋กํด์ค์ผ ํจ -> ์ ์กฐํ๋๋์ง ํ์ธ -----07/14 ์๊ฐ
// ํด๋ฌ์คํฐ์ ์กด์ฌํ๋ ๋ชจ๋ ์ธ๋ฑ์ค(index) ์กฐํ curl -XGET 'localhost:9200/_cat/indices?v'
// ํด๋ฌ์คํฐ์ ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ณ ์ด๋ฅผ ์กฐํํด๋ณด๊ธฐ
curl -XPUT 'localhost:9200/seereal?pretty' curl -XGET 'localhost:9200/_cat/indices?v'
// ์ธ๋ฑ์ค์ Type์ ์์ฑํ๊ณ Document(๊ด๊ณํ DB์์ Record์ ํด๋น)๋ฅผ ๋ฃ์ด๋ณด๊ธฐ(์์ธํ ์์ ) curl -XPOST 'localhost:9200/seereal/weather/1?pretty' -H 'Content-Type: application/json' -d'{"date": "2020-07-10"}'
seereal ์ธ๋ฑ์ค์ weather Type์ 1๋ฒ _id์ ์์ธํํ๋ ๊ณผ์ (_id ๊ฐ์ ๋ช ์ํ์ง ์์ผ๋ฉด ์์์ ๋ฌธ์์ด์ _id๋ก ํ ๋นํจ)
- -d ์ต์
--data-binary์ ์ถ์ฝ
์ถ๊ฐํ ๋ฐ์ดํฐ๋ฅผ ๋ช ์
or
// ๋ฐ์ดํฐ๋ฅผ json ํ์์ ํ์ผ๋ก ๋ง๋ค์ด์ API๋ฅผ ํธ์ถํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๋ฐฉ์๋ ๊ฐ๋ฅ
curl -XPOST 'localhost:9200/seereal/weather/2?pretty' -H 'Content-Type: application/json' -d @data.json
// ์ง๊ธ๊น์ง ์ถ๊ฐํ Docuent ์กฐํ curl -XGET 'localhost:9200/seereal/_search?pretty'
// _id๋ฅผ ์ด์ฉํด document๋ฅผ ๊ฒ์ curl -XGET 'localhost:9200/seereal/weather/1?pretty'
// Document์ ์๋ต ๊ฒฐ๊ณผ๋ฅผ ์ค์ผ ์ ์๋ ๋ฐฉ๋ฒ curl -XGET 'localhost:9200/seereal/weather/2?pretty&filter_path=_source'
curl -XGET 'localhost:9200/seereal/weather/2?pretty&filter_path=_source.celsius'
// Document ์์ curl -XPUT 'localhost:9200/seereal/weather/2?pretty' -H 'Content-Type: application/json' -d '{ "date": "2017-04-04" }'
// ์ธ๋ฑ์ค, Document ์ญ์
- ํน์ _id์ Document ์ญ์ ๋ฐฉ๋ฒ
curl -XDELETE 'localhost:9200/seereal/weather/1?pretty'
- ์ธ๋ฑ์ค ์ญ์ ๋ฐฉ๋ฒ curl -XDELETE 'localhost:9200/seereal?pretty'
*Elasticsearch ์ ๋ฌธํ๊ธฐ(1) ํด๋ฌ์คํฐ
*Elasticsearch ์ ๋ฌธํ๊ธฐ(2)
- ์ธํ๋ฐ ๊ฐ์ 'IT์ธ์ ์ํ ELK ํตํฉ๋ก๊ทธ์์คํ ๊ตฌ์ถ๊ณผ ํ์ฉ'