์ต์ ํ๊ตญ์ด ์๋ฃ๊ฐ ์์ด์ ์ค์น๋ง ํ๋ค๊ฐ๋ ์ฐ๋ฌ์ง ๋ปํ๋ค. ์ธ์์ ์ด๋ ๊ฒ ๊ธฐ๋นจ๋ฆฌ๋ ์ค์น์์ ์ ์ฒ์์ด๋ค... Elasticsearch ์ค์น ๋ฐฉ๋ฒ์ด ์ด๋ ต๋ค๊ธฐ๋ณด๋ค๋ ๋ฐฑ์๋ ๋ฐ๋ณด(...)์ธ ๋ด๊ฐ ๊ฑท๊ธฐ์๋ ์ ๋ฒ ์ด๋ ค์ด ์ผ์ด์๋ค๊ณ ํ ์ ์๊ฒ ๋ค. ์ด๋ฏธ ์ ์ฌํ ๊ฒฝํ์ด ์๋ค๋ฉด ์ฝ๊ฒ ํ์ค ๊ฒ ๊ฐ๋ค. ์ด์จ๋ ์ฑ๊ณตํ์ผ๋ ๊ฐ๋ณ๊ฒ ์ ๋ฆฌํด๋ณด๋๋ก ํ๊ฒ ๋ค.
1. Elasticsearch ๋?
๋ช ํํ๊ฒ ๋ต์ ๋ด๊ธฐ์๋ ์์ง ๋ถ์กฑํ ์ ์ด ๋ง์ง๋ง, ๊ฒ์์์ง์ด๋ค. NoSQL ๊ธฐ๋ฐ์ผ๋ก ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ ธ๊ฐ๊ณ , ๊ฐ๊ฐ์ RDBMS์ ๋งคํ๋๋ ์ฉ์ด๋ฅผ ๊ฐ์ง๊ณ ์๋ค. NoSQL์ ์ต์ํ๋ค๋ฉด ๋ ์ฌ์ธ ๊ฒ ๊ฐ๋ค. Firebase ๋ฑ๋ฑ.
A. RDBMS์ ๊ฒ์์์ง์ ์ฐจ์ด
- RDBMS๋ ํ
์ด๋ธ๋ก ๋ฑ๋ฑ ์ชผ๊ฐ์ ์๋ฅผ ์ ์๋ ์ฒด๊ณ์ ์ธ ๊ตฌ์กฐ
- ๋จ์ด ๊ฒ์, ์ฟผ๋ฆฌ๋ฌธ์ ํ์ฉํ ๋ฐ์ดํฐ ์ ๋ณ ๋ฑ์ด ๊ฐ๋ฅ
- ๊ฒ์์์ง์ ๋ณด๋ค ์ฌ์ฉ์ ์นํ์ ์ด๊ณ ์ ์ฐํ ์์ง
- ํ ์คํธ ํน์ง์ ์ด์ฉํ ๋์/์ ์์ด ๊ฒ์ ๊ฐ๋ฅ
- ๋น์ ํ ๋ฐ์ดํฐ ์์ธ ๋ฐ ๊ฒ์ ๊ฐ๋ฅ
- ์ญ์์ธ
B. ์ญ์์ธ
- ์์ธ → ์ฑ ์ ๋ชฉ์ฐจ
- ์ญ์์ธ → ์ด๋ค ๋จ์ด๊ฐ ์ฑ ์ ์ด๋์ ์์นํ๋์ง ์ ์ด๋ ๋จ์ด๋ณ ์์ธ ํ์ด์ง
Elasticsearch๋ ์ญ์์ธ์ ๊ธฐ๋ฐ์ผ๋ก ๊ฒ์๊ธฐ๋ฅ์ ์ ๊ณตํ๋ฏ๋ก ๋์๋ฌธ์ ๊ตฌ๋ถ ์์ด ๋ฌธ๊ตฌ ๊ฒ์ ๊ฐ๋ฅ
C. Elasticsearch์ ํน์ง ๋ฐ ์ฅ๋จ์
- NoSQL ๊ธฐ๋ฐ์ ๋ฌธ์ ์งํฅ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- http protocol๋ก ์ ๊ทผ ๊ฐ๋ฅํ REST API๋ฅผ ํตํด์ ๋ฐ์ดํฐ ์กฐ์ ์ง์
- ๋ถ์ฐ์ฒ๋ฆฌ๋ฅผ ํตํ ๋น ๋ฅธ ๊ฒ์
- ์ ๋ฌธ ๊ฒ์ / ๊ตฌ์กฐ ๊ฒ์ ๋ชจ๋ ์ง์
- ์์ ์ค์๊ฐ์ ์๋. 1์ด ๋ค ๊ฒ์ ๊ฐ๋ฅ
- transaction rollback ์ง์ x
- ๋ฐ์ดํฐ ์ญ์ ๋ฐ ์ ๋ฐ์ดํธ์ ๋น์ฉ์๋ชจ๊ฐ ์ฌํจ → ๊ธฐ์กด ๋ฌธ์๋ฅผ ์ญ์ ํ ์ฌ์์ฑํ๊ธฐ ๋๋ฌธ
D. ์ฉ์ด
- Index : ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Shard : ํํฐ์
- Type : ํ ์ด๋ธ
- Document : ํ
- Field : ์ด
- Mapping : ์คํค๋ง
- Query DSL : SQL
2. ์ค์น
A. Elasticsearch ์ค์น
์ ๋งํฌ์์ ์ด์์ฒด์ ์ ๋ง๋ ๋ฒ์ ์ Elasticsearch๋ฅผ ๋ค์ด๋ก๋ํ๊ณ , ์์ถ์ ํผ ๋ค bin/elasticsearch.bat ์ ์คํํ๋ฉด ๋๋๋ค.
๋ค๋ง ์ ์ํด์ผํ ์ ์, ํ์ฌ Elasticsearch 8.8.1 ๋ฒ์ ๊ธฐ์ค ์ง์ํ๋ Java ๋ฒ์ ์ JDK 11๊ณผ 17์ด๋ค. ๋ด์ฅ Java๊ฐ ์๋ค๊ณ ๋ ํ๋๋ฐ ํน์๋ ์๊ธธ ๋ฒ์ ๋ฌธ์ ๋ฅผ ์๋ฐฉํ๊ธฐ ์ํด JDK 17๋ก ๋ฒ์ ์ ๋ง์ถฐ์ฃผ๋ ๊ฒ์ ๊ถ์ฅํ๋ค.
๊ฐ์ด๋๋ ์ด ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์. ํ๊ตญ์ด ์๋ฃ๊ฐ ์๋ ํธ์ด๋ผ ์์ด๋ฅผ ์ฝ์ด์ผํ๋ค๋ ๋จ์ ์ด ์์ง๋ง... ์๋ ๊ฒ๋ณด๋ค๋ ์ผ์ฒ์ค๋ฐฑ๋ฐฐ ๋ซ๋ค. https://www.elastic.co/guide/en/elasticsearch/reference/8.8/elasticsearch-intro.html
๊ทธ๋ฆฌ๊ณ elasticsearch๋ฅผ ํฌํจํ์ฌ kibana, logstash ๋ฑ ๊ฐ์ ํ์ฌ์ ์ ํ๋ค์ yaml ํ์ผ์ ๊ธฐ๋ฐ์ผ๋ก ๋์ํ๊ธฐ ๋๋ฌธ์, ๋ญ๊ฐ ์ค์ ์ ๋ฐ๊ฟ์ฃผ๊ณ ์ถ์ผ๋ฉด config/elasticsearch.yaml ๋ฑ์ ํ์ผ์ ์์ฑํด์ฃผ์ด์ผ ํ๋ค. ์ง๊ธ ๋น์ฅ์ ๋ค์ด๋ฐ์์ ๋ ๊ธฐ๋ณธ์ค์ ์ผ๋ก ํด๋ ๋๊ฒ ๋ค.
elasticsearch๊ฐ ์ฌ์ฉํ๋ localhost port๋ 9200์ด๋ค. https://localhost:9200 ์ผ๋ก ์ ์ํด๋ณด์.
{
"name" : "DESKTOP-85ERSCL",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "{UUID}",
"version" : {
"number" : "8.8.1",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "{HASH}",
"build_date" : "2023-06-05T21:32:25.188464208Z",
"build_snapshot" : false,
"lucene_version" : "9.6.0",
"minimum_wire_compatibility_version" : "7.17.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "You Know, for Search"
}
์ด๋ฐ ์์ผ๋ก ์๋ต์ด ์ค๋ฉด ์ฑ๊ณต~
B. Kibana ์ค์น
Kibana๋ ๊ฐ๋ค. ์ ๋งํฌ์์ ์ด์์ฒด์ ์ ๋ง๋ Kibana๋ฅผ ๋ค์ด๋ก๋ ํ๊ณ , bin/kibana.bat๋ฅผ ์คํํด์ฃผ๋ฉด ๋๋ค.
kibana๊ฐ ์ฌ์ฉํ๋ localhost server port๋ 5601์ด๋ค. ์คํ์ด ๋๊ณ ์๋ ๊ฒ ๊ฐ์ผ๋ฉด https://localhost:5601๋ก ์ ์ํด๋ณด์.
Welcome to Elastic์ด๋ผ๋ ๋ฌธ๊ตฌ์ ํจ๊ป ๋ก๊ทธ์ธํ๋ผ๊ณ ํ๋ค. ๊ณ์ ์ ๋ง๋ ์ ๋ ์๋๋ฐ... ๊ทธ๋์ ์ง๊ธ ๋ง๋ค๋ฌ ๊ฐ๋ค.
Elastic์ ๋น๋ฐ๋ฒํธ๋ kibana๊ฐ ์๋๋ผ elasticsearch ์ชฝ์์ ์์ฑํ๋ค. elasticsearch ๊ฒฝ๋ก์์
.\bin\elasticsearch-setup-passwords.bat auto
ํ๋ฉด ์ฌ์ฉ์ elastic์ ๋ํ ๋น๋ฐ๋ฒํธ๋ฅผ ๋ฐํํด์ค๋ค. ๊ธฐ์ตํ๊ธฐ ์ด๋ ค์์ผ๋ก ์ฌ์ค์ ๋ ํด์ฃผ๊ฒ ๋ค.
.\bin\elasticsearch-reset-password.bat interactive elastic
ํ๊ณ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ฃผ๋ฉด ๋๋ค. ๋๋ ๊ทธ๋ฅ elastic์ผ๋ก ํต์ผํ๋ค.
๋ค์ elasticsearch์ kibana๋ฅผ ์คํํด์ฃผ๊ณ , ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด์ ์ ์ํ๋ค.
์ง์ํ๊ณ ์ ์ํ๋๋ฐ ์ฑ๊ณตํ๋ค.
์ ๋จน์๋ ๋ถ๋ถ์ ์ธ์ ๋ถํฐ์ธ์ง๋ ๋ชฐ๋ผ๋ kibana๋ก ์ ์ํ์ ๋ ๊ณง์ฅ kibana๋ก ๊ฐ๋ ๊ฒ ์๋๋ผ ํตํฉ ํ๋ก๊ทธ๋จ elastic์ผ๋ก ๊ฐ๊ฒ ๋์๊ธฐ ๋๋ฌธ์ ๊ตฌ๊ธ๋ง์ ํด๋ด๋ ๋ง์ง ์๋ ๋ถ๋ถ์ด ๋ง์๋ค.
๊ณผ๊ฑฐ์๋ try sample dataํ๋ฉด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํด์ ์ฌ๊ธฐ์ ๋ฐ๋ก ๋ณด์ฌ์คฌ๋๋ฐ, ์ง๊ธ์ elastic์์ ํธ์คํ ํ๋ ํ๊ฒฝ์ผ๋ก ๊ฒ์คํธ๋ก ์ ์ํด์ ํ์ธํด๋ณผ ์ ์๋ค. ๋ฐ๋ชจ์ฌ์ดํธ๋ ์๋ ๋งํฌ์ ์๋ค.
์ผ์ชฝ ๋๋กญ๋ค์ด...? ์ฌ์ด๋๋ฐ. ๋ฅผ ์ด๋ฉด Analytics๊ฐ ๋์ค๋๋ฐ ์ด ์น๊ตฌ๊ฐ kibana์ด๋ค. ๋๋ฌ๋ด๋ ์ง๊ธ์ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ dataview ์ถ๊ฐ์ ๊ฐ์ ๊ฒ๋ง ๋์จ๋ค. ์ฐ์ ์ฌ๊ธฐ๊น์ง ํ๋ฉด kibana์ elasticsearh ์ค์น๋ ๋!
๋ค์ ํฌ์คํ ์์๋ RDBMS์ elastic์ logstash๋ฅผ ํ์ฉํด์ ์ฐ๊ฒฐํด๋ณด๊ณ , kibana๋ก ๋ชจ๋ํฐ๋งํด๋ณด๋๋ก ํ๊ฒ ๋ค.
p.s. ๋ถ๋ช ์ธ์ฆ ๊ด๋ จ ๋ฌธ์ ๊ฐ ์์๋ ๊ฒ ๊ฐ์๋ฐ ๊ธฐ์ต์ด ํฌ๋ฏธํ๋ค.............. ์ค๊ฐ์ ๋ฌธ์ ๊ฐ ์์ผ์ จ๋ค๋ฉด ๋๊ธ๋ก ์๋ ค์ฃผ์๊ธธ ๋ฐ๋๋๋ค :)...
'๐ฅ Web > โ Back-end | etc.' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Elasticsearch] Index Template ๊ตฌ์ฑํ๊ธฐ with Kibana & Logstash (1) - Setting (0) | 2023.07.06 |
---|---|
[Elasticsearch] Logstash๋ฅผ ํตํด PostgreSQL๊ณผ Elastic Stack ์ฐ๋ํ๊ธฐ (0) | 2023.06.29 |
[Elasticsearch] Logstash ์ฌ์ฉํด๋ณด๊ธฐ (0) | 2023.06.29 |
[SQL] SQL ์ค๊ธ (0) | 2021.08.22 |
[SQL] SQL ๊ธฐ์ด (0) | 2021.07.24 |