πToday I Learned
Elasticsearch
μλΌμ€ν± μμΉ
- 리λ
μ€ κ³μ΄ ꡬλ > CentOS vs Ubuntu
- μλμ°μ¦, λ§₯os λ±..
Ubuntu
μ»΄ν¨ν° > Ubuntu
- λμΌ λΆν
- VMWare, VirtualBox κ°μλ¨Έμ
- Docker (2μ λΉμ·νλ©° κ°λ²Όμ)
- WSL, Windows Subsystem for Linux (κ°μ₯ κ°λ²Όμ)
WSL μ€μΉνκΈ°
- Windows κΈ°λ₯ μΌκΈ°/λκΈ°
- Linuxμ© Windows νμ μμ€ν
(체ν¬)
- κ°μ λ¨Έμ νλ«νΌ (체ν¬)
- + μ¬λΆν
-
Microsoft Store > "Ubuntu" κ²μ
awsμ λ²μ λ§μΆμ΄μ λ€μ΄λ‘λνκΈ°
-
μ€ν > μ€λ₯ λ°μ
-
PowerShell μ€ν(+ κ΄λ¦¬μ λͺ¨λ)
- 01.txt νμΌμ λͺ
λ Ήμ΄ ν μ€μ© μ€ν.
- wsl_update_x64.msi μ€μΉ
- λ§μ§λ§ μ€μ μ£Όμμ°½μ μ
λ ₯ν΄μ λ€μ΄λ°κ³ μ€μΉ
- pc μ¬λΆν
- cmdμμ WSL > 2 λ²μ λ³κ²½ (κΈ°λ³Έμ 1)
- $ wsl --set-default-version 2
- $ wsl --set-version Ubuntu-22.04 2 (μκ° μλλ©΄ μ¬μ©)
- $ wsl -l -v
- Ubuntu μ€ν
- username: ubuntu
- password: java1234
μ¬λΆν
ubuntu μ€ν
username, password λ±λ‘
$ pwd
νμ¬ λλ ν 리 μμΉ μΆλ ₯
8. ν¨ν€μ§ μ
λ°μ΄νΈ + ν¨ν€μ§ μ
κ·Έλ μ΄λ
- μ
λ°μ΄νΈ > 리ν¬μ§ν 리 μ΅μ μν κ°±μ
- μ
κ·Έλ μ΄λ > ν¨ν€μ§(νλ‘κ·Έλ¨) > μ€μ μ
κ·Έλ μ΄λ
- $ apt-get update -> Permission denied (κΆν μμΌλ©΄ κ±°μ λ¨)
- sudo(Super User Do) > μ§κΈ λͺ
λ Ήμ νν΄μ μ΅κ³ κ΄λ¦¬μ κΆνμΌλ‘ μ€ν
- $ sudo apt-get update
-
리λ
μ€ λͺ
λ Ήμ΄
1. pwd -> νμ¬ κ²½λ‘
1. ls, list
- ls
- ls -a -> λͺ¨λ νμΌ(μ¨κΉ ν¬ν¨)
- ls -l -> λͺ©λ‘ νν
drwxr-xr-x
d -> directory
- -> νμΌ
1. cd -> change directory
- cd μμν΄λ
- cd ..
- cd ~ -> μμ μ ν λλ ν°λ¦¬λ‘ μ΄λ
- cd / -> 루νΈν΄λλ‘ μ΄λ
1. vi(vim) νΈμ§κΈ°
- $ vi test.txt
a. λͺ¨λ
Β Β Β Β Β 1. μΌλ° λͺ¨λ
Β Β Β Β Β Β Β Β Β Β - i
Β Β Β Β Β Β Β Β Β Β - κ²μ
Β Β Β Β Β Β Β Β Β Β Β Β Β Β - /κ²μμ΄
Β Β Β Β Β Β Β Β Β Β Β Β Β Β - esc
Β Β Β Β Β Β Β Β Β Β Β Β Β Β - n(λ€μμ°ΎκΈ°), N(μ΄μ μ°ΎκΈ°)
Β Β Β Β Β 2. μ
λ ₯ λͺ¨λ
Β Β Β Β Β Β Β Β Β Β - esc > λͺ
λ Ή λͺ¨λ 볡κ·
Β Β Β Β Β 3. exλͺ
λ Ή λͺ¨λ(μ½λ‘ λͺ¨λ)
Β Β Β Β Β Β Β Β Β Β - μ μ₯ or λκ°κΈ°
Β Β Β Β Β Β Β Β Β Β - :q > μ’
λ£
Β Β Β Β Β Β Β Β Β Β - :q! > μ μ₯νμ§ μκ³ μ’
λ£
Β Β Β Β Β Β Β Β Β Β - :w > μ μ₯
Β Β Β Β Β Β Β Β Β Β - :wq > μ μ₯ ν μ’
λ£
-
JRE + JDK μ€μΉνκΈ°
- $ java -version
- $ sudo apt-get install default-jre
- $ javac -version
- $ sudo apt-get install default-jdk
elk μμ
ν΄λ μμ±
C:/class/code/elk/νκΈ°.txt
Elasticsearch
Elasticsearchλ?
- λ£¨μ¬ κΈ°λ°μ μλ° μ€ν μμ€ κ²μ μμ§
- λ°©λν μμ λ°μ΄ν°λ₯Ό μ μνκ³ κ±°μ μ€μκ°μΌλ‘ μ μ₯/κ²μ/λΆμν μ μλ€.
- REST APIλ₯Ό μ 곡νλ€.
- JSON ννλ‘ λ°μ΄ν° μ μ₯/μ‘°ννλ€.
ELK or Elastic Stack
- μλΌμ€ν± μμΉλ λ¨λ
μΌλ‘ μ¬μ© or ELK μ€νμΌλ‘ μ¬μ©
- E(Elasticsearch)
- L(Logstash)
- K(Kibana)
- B(Beats)
-
Logstatsh/Beats
- μν > Ingest
- λ€μν μμ€(DB, CSV, Log...)λ‘λΆν° λ°μ΄ν°λ₯Ό κ°μ Έλ€, μ‘°μ ν Elasticsearchμκ² μ λ¬νλ μν
-
Elasticsearch
- μν > Store, Search, Analyze
- μ§μ μμ§ λ°μ΄ν° or Logstash μμ§ λ°μ΄ν° > κ΄λ¦¬ or μ‘°μ(κ²μ)
-
Kibana
- μν > Visualize & Manage
- Elasticsearchμ λ°μ΄ν°λ₯Ό μκ°ν or νΈλ¦¬νκ² μ‘°μ κΈ°λ₯ μ 곡
- GUI νκ²½ μ 곡
ELK μ€μΉ
02.txt λͺ
λ Ήλ¬Έ μ€ν
- $ sudo apt-get install elasticsearch
- $ systemctl status elasticsearch
- $ systemctl start elasticsearch -> λΆκ°
- $ sudo systemctl start elasticsearch
- $ sudo systemctl enable elasticsearch -> μ°λΆν¬ μ€ν μ μλμΌλ‘ μ€ν
- λΈλΌμ°μ
> http://localhost:9200
- $ sudo apt-get install kibana
- $ sudo systemctl status kibana
- $ sudo systemctl start kibana
- λΈλΌμ°μ
> http://localhost:5601
-> Explore μ ν
- $ sudo apt-get install logstash
- $ sudo systemctl status logstash
Elasticsearch ν΅μ¬ κ°λ
-
ν΄λ¬μ€ν°
- λ
Έλμ μ§ν©
- νλ μ΄μμ λ
Έλ μ§ν©
-
λ
Έλ
- μλΌμ€ν±μμΉκ° μ€μΉλ μλ²(μ»΄ν¨ν°)
-
μΈλ±μ€
- λΉμ·ν νΉμ±μ κ°μ§ λ¬Έμμ μ§ν©
- λ°μ΄ν°λ² μ΄μ€ μν
-
νμ
- λνλ¨ΌνΈ μ§ν©
- ν
μ΄λΈ μν
-
λνλ¨ΌνΈ
- λ°μ΄ν° μ μ₯ λ¨μ
- λ μ½λ μν (***)
- JSON ν¬λ§·
-
μ€λ&리ν리카
- λΆμ° νκ²½μ μν μμ
RDBMS vs Elasticsearch
Scheme Β Β Β Mapping
Database Β Index(***)
Table Β Β Β Β Β Β Type
Row Β Β Β Β Β Β Β Document(***)
Column Β Β Field
SQL Β Β Β Β Β Β Β QueryDSL
Elasticsearch REST API
RDB vs 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/1"
REST APIλ₯Ό μ¬μ©νκΈ° μν λꡬ
- curl
- Postman, Insomnia λ± REST Client
- Kibana > Dev Tools
Index(DB, ν
μ΄λΈ), Document(λ°μ΄ν°(ν))
Index CRUD
Index μμ± μ > μ΄λ―Έ μ‘΄μ¬νλμ§ νμΈ > μ‘°ννλ€.
in cmd(+ μ°λΆν¬ μΌλκΈ°)
- $ curl -X GET "localhost:9200/<μΈλ±μ€λͺ
>"
- $ curl -X GET "localhost:9200/member"
- $ curl -X GET "localhost:9200/member?pretty"
Index μμ±νκΈ°
- $ curl -X PUT "localhost:9200/member?pretty"
Index μμ νκΈ°
- $ curl -X DELETE "localhost:9200/member?pretty"
Document CRUD
- Document μ‘°μ
- Document == λ μ½λ 1μ€
ν
μ΄λΈ μμ±
- $ curl -X PUT "localhost:9200/member"
Document μΆκ°νκΈ°
-
PUT
-
λ°μ΄ν° μ
λ ₯νκΈ°
-
Documentλ₯Ό μ μ₯ν Indexκ° μ‘΄μ¬νμ§ μμλ λ°μ΄ν°λ₯Ό λ£μΌλ©΄ μλμΌλ‘ Indexλ₯Ό μμ±ν΄μ€λ€.
-
$ curl -X PUT "<μλ²μ£Όμ>:<ν¬νΈλ²νΈ>/<μΈλ±μ€>/_doc/<λνλ¨ΌνΈID = primary key>" -H "Content-Type: application/json" -d "λ°μ΄ν°"
-
$ 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" -H "Content-Type: application/json" -d '{"name": "μ무κ°", "age": 22}'
κ²½κ³ λ©μΈμ§ μ κ±°