Elasticsearch๐
- ์๋ฐ๋ก ๋ง๋ค์ด์ง ๋ฃจ์ฌ ๊ธฐ๋ฐ์ ์คํ ์์ค ๊ฒ์ ์์ง์ด๋ค.
- ๋ค๋์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ ์ธก๋ฉด์์๋ DB์ ๋น์ทํด๋ณด์ด์ง๋ง, ์ ํ ๋ค๋ฅด๋ค.
- ์ฃผ๋ก ๋๋์ ๋ฐ์ดํฐ๋ฅผ ์ค์๊ฐ์ผ๋ก ๊ฒ์ํ๊ณ ๋ถ์ํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๋ก๊ทธ ๋ฐ์ดํฐ, ๋ฉํธ๋ฆญ ๋ฐ์ดํฐ, ํ ํ ์คํธ ๊ฒ์ ๋ฑ ๋ค์ํ ์ฉ๋๋ก ํ์ฉ๋๋ค.
- REST API๋ฅผ ์ ๊ณตํ๋ค.
- JSON ๋ฌธ์๋ฅผ ์ ์ฅ, ๊ฒ์, ๋ถ์ํ ์ ์๋ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
- ELK or Elastic Stack
- ์๋ผ์คํฑ ์์น๋ ๋จ๋ ์ผ๋ก ์ฌ์ฉ๋๊ฑฐ๋ ELK ์คํ์ผ๋ก ์ฌ์ฉํ๋ค.
- E(Elasticsearch), L(Logstash), K(Kibana), B(Beats) - (์๋ต) ์ฒซ ๊ธ์๋ฅผ ๋ฐ์ ์ง์ด์ง ์ด๋ฆ์ผ๋ก, ์ด ์ธ ๊ฐ์ง ์คํ ์์ค ์ํํธ์จ์ด๋ก ๊ตฌ์ฑ๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐ ์๊ฐํ ์๋ฃจ์ ์ ํ๋ค.
1. Logstash/Beats
์ญํ : Ingest(์์ง)
๋ค์ํ ์์ค(DB, CSV, Log ๋ฑ)์ผ๋ก ๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ๋ค, ์กฐ์ ํ Elasticsearch์๊ฒ ์ ๋ฌํ๋ ์ญํ ์ ํ๋ค.
2. Elasticsearch
์ญํ : Store, Search, Analyze
์ง์ ์์งํ ๋ฐ์ดํฐ ๋๋ Logstach ์ผ๋ก ์์งํ ๋ฐ์ดํฐ๋ฅผ ๊ด๋ฆฌ, ์กฐ์(๊ฒ์)ํ๋ค.
3. Kibana
์ญํ : Visualize(์๊ฐํ), Manage(๊ด๋ฆฌ)
Elasticsearch์ ๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ฑฐ๋ ํธ๋ฆฌํ๊ฒ ์กฐ์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
GUI ํ๊ฒฝ์ ์ ๊ณตํ๋ค.
์๋ผ์คํฑ์์น ์ค์น๐
์ฐ๋ถํฌ๋ ์๋ผ์คํฑ์์น ํ๋ก๊ทธ๋จ์ ์กด์ฌ๋ฅผ ๋ชจ๋ฅธ๋ค.
๋งํฌ๋ฅผ ์ฃผ๋ฉด ์ฐ๋ถํฌ๊ฐ ์ค์นํ๋๋กํ๋ค.
1. ์ฐ๋ถํฌ ์คํ
2. ์๋ 3๋ฌธ์ฅ ์์๋๋ก ์ ๋ ฅ
curl -fsSL https://artifacts.elastic.co/GPG-KEY-elasticsearch |sudo gpg --dearmor -o /usr/share/keyrings/elastic.gpg
echo "deb [signed-by=/usr/share/keyrings/elastic.gpg] https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
sudo apt-get update
3. ์๋ผ์คํฑ์์น ์ค์น
์์์ ์ ๋ ฅํ ๊ฒ์ ๋ฒ์ 7์ ๋์ ์๋ผ์คํฑ ๋ฒ์ ์ ์ฐ๊ฒฐ์์ผ๋์์ ์ ์ค์ ๋๋ก ๋ค์ด๋๋ค.
sudo apt-get install elasticsearch
4. ํ๋ก๊ทธ๋จ์ ์ํ๋ฅผ ์ถ๋ ฅ
systemctl status elasticsearch
5. ์คํ
sudo systemctl start elasticsearch
6. ์๋ผ์คํฑ์์น ์ ์ฉ ๋ธ๋ผ์ฐ์ ์ ์
http://localhost:9200/
9200 ํฌํธ๋ ์๋ผ์คํฑ์์น ์ ์ฉ ํํธ์ด๋ค.
์ฃผ์๋ก ์ ์ํ์ฌ ํ๋ก๊ทธ๋จ์ด ์ ์คํ๋๊ณ ์๋์ง ํ์ธํ ์ ์๋ค.
7. ์๋ ์คํ
๋งค ์คํํ ๋ ๋ช ๋ น์ด๋ก ์คํํ๊ธฐ ๋ฒ๊ฑฐ๋ก์์ ์ฐ๋ถํฌ ์คํ ์ ์๋์ผ๋ก ์คํ๋๊ฒ ํ๋ค.
sudo systemctl enable elasticsearch
Kibana ์ค์น๐
1. ์ค์น
sudo apt-get install kibana
kibana ํ๋ก๊ทธ๋จ์ด ์ด์ง ๋ฌด๊ฑฐ์ ์คํํ๋๋ฐ ์๊ฐ์ด ์ข ๊ฑธ๋ฆฌ๋ ํธ์ด๋ค.
2. ์ค์น ํ์ธ
sudo systemctl status kibana
3. ์คํ
sudo systemctl start kibana
4. kibana ์ ์ฉ ๋ธ๋ผ์ฐ์ ์ ์
http://localhost:5601
5601 ํฌํธ๋ ํค๋ฐ๋์ ์ ์ฉ ํฌํธ์ด๋ค.
kibana๋ postman ๊ฐ์ด ์ ์ถ๋ ฅ์ ํ ์ ์๋ ์ญํ ์ ํ๋ค.
Logstash ์ค์น๐
1. ์ค์น
sudo apt-get install logstash
2. ์ค์น ํ์ธ
sudo systemctl status logstash
๊ณ์ ๋์ํด์ผํ๋ ํ๋ก๊ทธ๋จ์ ์๋๊ธฐ์ ์ค์น ํ์ธ๋ง ํ๋ค.
Elasticsearch ํต์ฌ ๊ฐ๋ ๐
1. ํด๋ฌ์คํฐ (Cluster)
- Elasticsearch ๋ ธ๋๋ค์ ์งํฉ
- ์ฌ๋ฌ ๋์ ๋ ธ๋๊ฐ ํจ๊ป ์๋ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๋ถ์ฐ ์์คํ ์ ํ์ฑํ๋ค.
- ํ๋ ์ด์์ ๋ ธ๋ ์งํฉ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์ผ๋ฉฐ, ์ด๋ค ๋ ธ๋๋ ์๋ก ํต์ ํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐํ๊ณ ๊ฒ์ ์์ ์ ๋ถ๋ดํ๋ค.
2. ๋ ธ๋ (Node)
- Elasticsearch๊ฐ ์ค์น๋ ๊ฐ๊ฐ์ ์๋ฒ ๋๋ ์ปดํจํฐ
- ์ฌ๋ฌ ๋์ ๋ ธ๋(์ปดํจํฐ)๊ฐ ํด๋ฌ์คํฐ๋ฅผ ํ์ฑํ์ฌ ์์ ์ ๋ถ์ฐํ๊ณ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ ํ์ฌ ๊ณ ๊ฐ์ฉ์ฑ์ ์ ๊ณตํ๋ค.
3. ์ธ๋ฑ์ค (Index) โ
- ๋น์ทํ ํน์ฑ์ ๊ฐ์ง ๋ฌธ์๋ค์ ์งํฉ
- ๋ฐ์ดํฐ๋ฅผ ๋ชจ์๋์ ์ต์์ ๊ณ์ธต์ผ๋ก์, ์ผ๋ฐ์ ์ผ๋ก ํ๋์ ์ธ๋ฑ์ค๋ ํ๋์ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ํด๋นํ๋ค.
- Elasticsearch 7.x ์ดํ์๋ ํ์ ์ ์ญํ ์ด ๊ฑฐ์ ์ฌ๋ผ์ ธ์ ์ธ๋ฑ์ค๊ฐ ํ ์ด๋ธ์ ์ญํ ๊ณผ๋ ์ ์ฌํด์ก๋ค.
4. ํ์ (Type)
- ๋ํ๋จผํธ ์งํฉ
- DB์ ํ ์ด๋ธ ์ญํ ์ ํ๋ค.
5. ๋ํ๋จผํธ (Document) โ
- Elasticsearch์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ์ ๋จ์
- ๋ ์ฝ๋๋ ๋ฌธ์์ ๊ฐ๋
- ๋ํ๋จผํธ๋ JSON ํ์์ผ๋ก ํํ๋๋ฉฐ, Elasticsearch์์๋ ์ด๋ฌํ ๋ํ๋จผํธ๋ฅผ ์์ธํํ์ฌ ๊ฒ์ ๋ฐ ๋ถ์์ ์ํํ๋ค.
6. ์ค๋&๋ ํ๋ฆฌ์นด
- ๋ถ์ฐ ํ๊ฒฝ์ ์ํ ์์์ด๋ค.
- ์ค๋๋ Elasticsearch์ ๋ถ์ฐ ํ๊ฒฝ์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ฐ ๋ฐ ์ ์ฅํ๊ธฐ ์ํ ๋จ์์ด๋ค. ์ธ๋ฑ์ค๋ ์ฌ๋ฌ ๊ฐ์ ์ค๋๋ก ๋๋์ด์ ธ ์ ์ฅ๋๋ค.
- ์ค๋๋ ๋ฌผ๋ฆฌ์ ์ธ ๋จธ์ ์ด๋ ๋ ธ๋์ ๋ถ์ฐ๋์ด ์ ์ฅ๋๋ฉฐ, ์ค๋ ๋ณต์ ๋ ๊ฐ ์ค๋์ ๋ํ ๋ณต์ฌ๋ณธ์ ์ ์งํ์ฌ ๊ณ ๊ฐ์ฉ์ฑ์ ํ๋ณดํ๋ค.
- ๋ถ์ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์์ ์ค๋์ ์ค๋ ๋ณต์ ๋ ํ์ฅ์ฑ๊ณผ ๋ด๊ฒฐํจ์ฑ์ ์ ๊ณตํ๋ ํต์ฌ ๊ฐ๋ ์ ๋๋ค.
- RDBMS VS Elasticsearch
RDBMS | Elasticsearch |
Schme(์คํค๋ง) | Mapping |
Database | Index โ |
Table | Type |
Row | Document โ |
Column | Filed |
SQL | QueryDSL |
Index ์ Document ๊ฐ๋ ์์ฃผ๋ก ์ดํดํ๊ธฐ
- Elasticsearch REST API
RDB | Elasticsearch |
SELECT | GET |
UPDATE | PUT/POST |
INSERT | PUT/POST |
DELETE | DELETE |
์ฟผ๋ฆฌ๋ฌธ ๋น๊ต
SQL > select * from address where id = 1;
ES > curl -X GET "localhost:9200/address/_doc/1"
- REST API๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํ ๋๊ตฌ ์ข ๋ฅ
1. curl ๋ช ๋ น์ด
2. Postman, Insomnia ๋ฑ์ REST Client → ์ฆ์ ์ ์ถ๋ ฅ์ ํ ๋๋ tool๋ ๋ฒ๊ฑฐ๋กญ๋ค.
3. Kibana์ Dev Tools
Kibana์ Dev Tools ๐
Index(DB, ํ ์ด๋ธ), Document(๋ฐ์ดํฐ ๋๋ ํ)
curl๋ก Index ์กฐ์ํ๊ธฐ(CRUD)
- Index ์์ฑ ๋ฐ ์กฐํ
์กฐํ
Index ์์ฑ ์ ์ ์ด๋ฏธ ์กด์ฌํ๋์ง ํ์ธ์ ์ํด ์กฐํํ๋ค.
curl -X GET "localhost:9200/<์ธ๋ฑ์ค๋ช >"
curl -X GET "localhost:9200/member"
pretty : ๋ฐํ๋ JSON ์๋ต์ ๋ณด๊ธฐ ์ฝ๊ฒ ๋ค์ฌ์ฐ๊ธฐ์ ํจ๊ป ์ ๋ ฌ๋ ํํ๋ก ํ์ํด์ฃผ๋ ์ต์ ์ด๋ค.
curl -X GET "localhost:9200/member?pretty"
member ์ธ๋ฑ์ค๊ฐ ์์ด error๋ก ๋ฐํ๋์๋ค.
์์ฑ
curl -X PUT "localhost:9200/member?pretty"
๋ค์ ์กฐํ
curl -X GET "localhost:9200/member?pretty"
- Index ์ญ์
curl -X DELETE "localhost:9200/member?pretty"
curl๋ก Document ์กฐ์ํ๊ธฐ(CRUD)
- Document ์์ฑ ๋ฐ ์กฐํ
๋ค์ Index ์์ฑ
curl -X PUT "localohst:9200/member"
Document ์์ฑ
curl -X PUT "<์๋ฒ์ฃผ์>:<ํฌํธ๋ฒํธ>/<์ธ๋ฑ์ค>/_doc/<๋ํ๋จผํธID>" -H "Content-Type: application/json" -d "๋ฐ์ดํฐ"
_doc : ์์ฝ์ด
-H : ํค๋
"Content-Type: application/json" : ๋ด๊ฐ ๋๊ธฐ๋ ๋ฐ์ดํฐ๊ฐ json์ด๋ผ๋ ๊ฒ์ ์๋ ค์ค๋ค.
์๋์ฐ์์๋ ๊ฝ๋ฐ์ดํ(')๋ฅผ ์ฌ์ฉํ์ง ๋ชปํ๋ค.
curl -X PUT "localhost:9200/member/_doc/1" -H "Content-Type: application/json" -d '{"name": "์์๊นก", "age":20}'
์ธ๋ฑ์ค ๋ฒํธ๊ฐ ๋์ผํ๋ฉด ๋ฎ์ด์ด๋ค๊ณ ์ธ์ํ๋ค.
curl -X PUT "localhost:9200/member/_doc/2?pretty" -H "Content-Type: application/json" -d '{"name": "susukkang", "age":26}'
- Document ์ญ์
Index ์ญ์
Document๋ฅผ ์ญ์ ํ๊ธฐ ์ ์ Index๋ฅผ ์ญ์ ํด๋ณธ๋ค.
curl -X DELETE "localhost:9200/member?pretty"
index๊ฐ ์ญ์ ๋๋ฉด์ ์์ ์๋ ๋ํ๋จผํธ๋ ์ญ์ ๋๋ค๊ณ ์๊ฐํ๋ค.
ํ์ง๋ง ์กฐํํ๋ฉด ๋ํ๋จผํธ๊ฐ ์กฐํ๊ฐ ๋๋ค.
๊ทธ ์ด์ ๋ ์๋ผ์คํฑ์ ์ ํํ๋์ด ์์ง์์ ๋น๊ด๊ณํ DB์ด๊ธฐ ๋๋ฌธ์ด๋ค.
Elasticsearch๋ ์ ํํ๋์ด ์์ง ์์ ๋น๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ก์, ์คํค๋ง๊ฐ ์ ์ฐํ๊ฒ ๋ค๋ค์ง๋ ํน์ง์ด ์๋ค. ์ด๋ฌํ ํน์ฑ์ผ๋ก ์ธํด ๋ํ๋จผํธ๋ฅผ ์ ์ฅํ ์ธ๋ฑ์ค๊ฐ ๋ฏธ๋ฆฌ ์ ์๋์ด ์์ง ์๋๋ผ๋ ์๋์ผ๋ก ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ค.
ํ์ง๋ง ๋ณดํต ๊ด๋ฆฌ๋ฅผ ์ํด ์ธ๋ฑ์ค๋ฅผ ์ง์ ์์ฑํ๋ค.
Dev Tools์์ ์กฐ์ํ๊ธฐ(CRUD)
curl ๋์ dev Tool ์ฌ์ฉํ๋ค.
์ผ์ชฝ๋ฉ๋ด ์ค์์ Dev Tools ์ ํ
๋ฏธ๋ฆฌ๋ณด๊ธฐ
- Index ์์ฑ
๊ธฐ๋ณธ๊ฐ์ผ๋ก ์๋ก ํค๋ฐ๋๊ฐ ์๋ผ์คํฑ์์น์ ์ฐ๊ฒฐ๋์์ผ๋ฏ๋ก curl -X "localhost:9200" ์๋ต ๊ฐ๋ฅํ๋ค.
์คํ ๋จ์ถํค๋ Ctrl + Enter์ด๋ค.
PUT member
- Document ์์ฑ
PUT member/_doc/1
{
"name": "susukkang",
"age": 20
}
- Document ์กฐํ
GET member/_doc/1
๋ฐ์ดํฐ๋ง ์กฐํ
GET member/_source/1
- ๋ฉ์์ง ์๋ตํ๊ธฐ
ํ๋ก๊ทธ๋จ ๋ฉ์ถ๊ธฐ
sudo systemctl stop elasticsearch
yml ์ค์ ํ์ผ ์์
sudo vi /etc/elasticsearch/elasticsearch.yml
'o'๋๋ฌ ํธ์ง
xpack.security.enabled: false
๋ช ๋ น์ด ์ ๋ ฅํ ESC๋ก ์ ๋ ฅ๋ชจ๋์์ ๋ช ๋ น๋ชจ๋๋ก ๋ณํํ ํ :wq๋ก ์ ์ฅํ๊ณ ๋น ์ ธ๋์จ๋ค.
'Elasticsearch' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Elasticsearch] Body Search ๊ฒ์ (0) | 2023.12.08 |
---|---|
[Elasticsearch] Kibana์ Dev Tools : ๋ฐ์ดํฐ ์กฐ์ํ๊ธฐ (1) | 2023.12.07 |
[Elasticsearch] Elasticsearch ์ค์ (1) WSL : ์๋์ฐ์์ ๋ฆฌ๋ ์ค ์ฌ์ฉํ๊ธฐ (0) | 2023.12.07 |