Apache Lucene๊ธฐ๋ฐ Java์คํ์์ค ๋ถ์ฐ ๊ฒ์ ์์ง์ผ๋ก ์ค์๊ฐ ์ ์ฅ, ๊ฒ์, ๋ถ์ ๊ฐ๋ฅ
Elasticsearch๋ ํ ์คํธ๋ฅผ ํ์ฑํด์ ๊ฒ์์ด ์ฌ์ ์ ๋ง๋ ๋ค์์ inverted index ๋ฐฉ์์ผ๋ก ํ ์คํธ๋ฅผ ์ ์ฅ
ํค์ ๋ฐ๋ผ ์ฌ๋ฌ ์ค๋๊ฐ ๊ตฌ์ฑ๋๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ๋ค. ์ธ๋ฑ์ค๋ ๊ฐ๊ฐ์ ์ค๋๋ง๋ค ๊ตฌ์ฑ๋๋ค. ๊ฐ๊ฐ์ ์ค๋๋ 0๊ฐ ์ด์์ ๋ณต์ ๋ณธ์ ๊ฐ์ง
elasticsearch๋ ํด๋ฌ์คํฐ๋ง์ ์ง์ํ๋ฉฐ ํด๋ฌ์คํฐ๊ฐ ๊ฐ๋๋ ๋ ์ฌ๋ฌ ๋ ธ๋ ์ค ํ๋๊ฐ ๋ฉํ๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ์ํ ๋ง์คํฐ ๋ ธ๋๋ก ์ ์ถ
๋๋์ ๋น์ ํ ๋ฐ์ดํฐ ๊ฒ์ ๊ฐ๋ฅํ๋ฉฐ ์ ๋ฌธ๊ฒ์, ๊ตฌ์กฐ๊ฒ์ ๋ชจ๋ ์ง์
Transaction Rollback์ ์ง์ํ์ง ์ํจ, ๋ฐ์ดํฐ์ ์ ๋ฐ์ดํธ๋ฅผ ์ ๊ณตํ์ง ์ํจ(์ ๋ฐ์ดํธ ๋ช ๋ น์ด ์ฌ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฌธ์ ์ญ์ ํ ์๋ก์ด ๋ฌธ์ ์์ฑ)
http ํ๋กํ ์ฝ๋ก ์ ๊ทผ์ด ๊ฐ๋ฅํ REST API์ง์ ๊ณ ์ URL๋ก ์ ๊ทผ ๊ฐ๋ฅ PUT, POST, GET, DELETE ๋ฅผ ์ด์ฉํด์ ์์์ ์ฒ๋ฆฌ
Elasticsearch๋ ์๋ฐ๋ก ๊ฐ๋ฐ๋์๊ธฐ ๋๋ฌธ์ ์๋ฐ ์คํ์ด ๊ฐ๋ฅํ ํ๊ฒฝ์ด๋ผ๋ฉด ์ด๋์๋ ๊ตฌ๋์ด ๊ฐ๋ฅ
Relational Database | 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(Domain Specific Language) |
Dataย CRUD | ย Elasticsearch Restful |
---|---|
ย SELECT | GETย |
ย INSERTย | PUT |
ย UPDATE | POST |
ย DELETE | DELETE |
์
๋ ฅ : http://user.com/input.jsp?name=kim&age=38&gender=m
์กฐํ : http://user.com/get.jsp?name=kim
์ญ์ : http://user.com/delete.jsp?name=kim
์
๋ ฅ : PUT http://user.com/kim -d {"name":"kim", "age":38, "gender":"m"}
์กฐํ : GET http://user.com/kim
์ญ์ : DELETE http://user.com/kim
ELK Stack์ย Elastic Search, Logstash, Kibana๋ฅผ ํต์นญํ๋ ๋ง์ธ๋ฐ, ๋ฐ์ดํฐ ๋ก๊ทธ๋ค์ด logstash๋ฅผ ๊ฑฐ์ณ ์๋ผ์คํฑ์์น์ ์ ์ฅ๋๊ณ , ์ด๋ฅผ ์๊ฐํํ์ฌ Kibana์์ ๋ณด์ฌ์ค๋ค.
๋ฐ์ดํฐ ์ ์ฌ
elasticsearch MySQL ๋๊ธฐํ ๊ฐ๋ฅ
์ค์๊ฐ ํ์ดํ๋ผ์ธ ๊ธฐ๋ฅ์ ๊ฐ์ง ๋ฐ์ดํฐ ์์ง ์์ง ์คํ์์ค์ด๋ค. logstash ์๋ก ๋ค๋ฅธ ์์ค์ ๋ฐ์ดํฐ๋ฅผ ๋์ ์ผ๋ก ํตํฉํ๊ณ ์ํ๋ ๋์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ๊ทํ ํ ์ ์๋ค.
๋ค์ํ ์ ๋ ฅ๊ณผ ํํฐ ๋ฐ ์ถ๋ ฅ ํ๋ฌ๊ทธ์ธ์ ํตํด, ๋ชจ๋ ์ ํ์ ์ด๋ฒคํธ๋ฅผ ๋ณด๊ฐ ๋ณํ ๊ฐ๋ฅ
ES + Kibana ์๋์ง์ ํจ๊ป scale-up ๊ฐ๋ฅ
Logstash๋ ๋ค์ํ ์์ค์์ ๋ฐ์ดํฐ๋ฅผ ์์งํด ์ด๋ฅผ ๋ณํํ์ฌ, ์ ์ฅ์๋ก ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค. ์์ค์ ์ข ๋ฅ, ์ฌ์ด์ฆ, ํํ์ ๊ด๊ณ ์์ด ์์งํ ์ ์๋ ๊ฒ์ด ํน์ง์ ์ด๋ค. ๋ฐ์ดํฐ๊ฐ ๋ก๊ทธ ์คํ์๋ฅผ ๊ฑฐ์น ๋ ํํฐ๋ง์ด ๋ฐ์ํ๋๋ฐ, ํํฐ๋ฅผ ํตํด ๊ฐ ์ด๋ฒคํธ๋ฅผ ๊ณตํต ํ์์ผ๋ก ๋ณํ, ํตํฉํด์ค ์ ์๋ค.
GET [์ธ๋ฑ์ค์ด๋ฆ]/_search
{
"query" : {
"match_all" : {}
},
"sort": [
{
"[ํ๋๋ช
]": {
"order" : "desc" #์ค๋ฆ์ฐจ์: asc, ๋ด๋ฆผ์ฐจ์: desc
}
}
]
}
command line data transfer tool, Linux / Unix ๊ณ์ด ๋ฐ Windows๋ฑ ์ฃผ์ OS์์ ๊ตฌ๋
๋ฐ์ดํฐ ๋ค์ด๋ก๋ ์ ๋ก๋ ๊ฐ๋ฅ, ์ ์ก ์ฌ๊ฐ ๋์ญํญ ์ ํ, ํ๋ก์ ์ง์ ์ฌ์ฉ์ ์ธ์ฆ ๋ฑ ์ต์ ๋ง์
curl๋ช
๋ น์ ์ด์ฉํด elasticsearch ํด๋ฌ์คํฐ์ ์ต์์ ๊ฒฝ๋ก ํธ์ถ โ> ํด๋ฌ์คํฐ ์ ๋ณด jsonํ์ return
jdbc ๊ฐ ํ์ํ์ง ์๋ค.
curl [options][URL...] ์ด๋ฐ์์ผ๋ก ์์ฑ
$ curl -XGET "http://localhost:9200"
{
"name" : "DESKTOP",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "________________",
"version" : {
"number" : "7.17.7",
"build_flavor" : "default",
"build_type" : "deb",
"build_hash" : "______________________________",
"build_date" : "2022-10-______________________",
"build_snapshot" : false,
"lucene_version" : "8.11.1",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}