TIL 23.12.04

ν™©μ€ν•˜Β·2023λ…„ 12μ›” 6일
0

TIL

λͺ©λ‘ 보기
129/146

πŸ“ŒToday I Learned

Elasticsearch

μ—˜λΌμŠ€ν‹± μ„œμΉ˜

  • λ¦¬λˆ…μŠ€ 계열 ꡬ동 > CentOS vs Ubuntu
  • μœˆλ„μš°μ¦ˆ, λ§₯os λ“±..

Ubuntu

컴퓨터 > Ubuntu

  1. λ“€μ–Ό λΆ€νŒ…
  2. VMWare, VirtualBox 가상머신
  3. Docker (2와 λΉ„μŠ·ν•˜λ©° 가벼움)
  4. WSL, Windows Subsystem for Linux (κ°€μž₯ 가벼움)

WSL μ„€μΉ˜ν•˜κΈ°

  1. Windows κΈ°λŠ₯ 켜기/끄기
  • Linux용 Windows ν•˜μœ„ μ‹œμŠ€ν…œ (체크)
  • 가상 λ¨Έμ‹  ν”Œλž«νΌ (체크)
  • + μž¬λΆ€νŒ…
  1. Microsoft Store > "Ubuntu" 검색
    aws와 버전 λ§žμΆ”μ–΄μ„œ λ‹€μš΄λ‘œλ“œν•˜κΈ°

  2. μ‹€ν–‰ > 였λ₯˜ λ°œμƒ

  3. PowerShell μ‹€ν–‰(+ κ΄€λ¦¬μž λͺ¨λ“œ)

  • 01.txt 파일의 λͺ…λ Ήμ–΄ ν•œ 쀄씩 μ‹€ν–‰.
  1. wsl_update_x64.msi μ„€μΉ˜
  • λ§ˆμ§€λ§‰ 쀄은 μ£Όμ†Œμ°½μ— μž…λ ₯ν•΄μ„œ λ‹€μš΄λ°›κ³  μ„€μΉ˜
  • pc μž¬λΆ€νŒ…
  1. cmdμ—μ„œ WSL > 2 버전 λ³€κ²½ (기본은 1)
  • $ wsl --set-default-version 2
  • $ wsl --set-version Ubuntu-22.04 2 (μœ„κ°€ μ•ˆλ˜λ©΄ μ‚¬μš©)
  • $ wsl -l -v
  1. Ubuntu μ‹€ν–‰
  • username: ubuntu
  • password: java1234




μž¬λΆ€νŒ…
ubuntu μ‹€ν–‰
username, password 등둝

$ pwd
ν˜„μž¬ 디렉토리 μœ„μΉ˜ 좜λ ₯


8. νŒ¨ν‚€μ§€ μ—…λ°μ΄νŠΈ + νŒ¨ν‚€μ§€ μ—…κ·Έλ ˆμ΄λ“œ

  • μ—…λ°μ΄νŠΈ > 리포지토리 μ΅œμ‹  μƒνƒœ κ°±μ‹ 
  • μ—…κ·Έλ ˆμ΄λ“œ > νŒ¨ν‚€μ§€(ν”„λ‘œκ·Έλž¨) > μ‹€μ œ μ—…κ·Έλ ˆμ΄λ“œ
  • $ apt-get update -> Permission denied (κΆŒν•œ μ—†μœΌλ©΄ 거절됨)
  • sudo(Super User Do) > μ§€κΈˆ λͺ…령에 ν•œν•΄μ„œ 졜고 κ΄€λ¦¬μž κΆŒν•œμœΌλ‘œ μ‹€ν–‰
  • $ sudo apt-get update
  1. λ¦¬λˆ…μŠ€ λͺ…λ Ήμ–΄
    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 > μ €μž₯ ν›„ μ’…λ£Œ

  2. 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)
  1. Logstatsh/Beats

    • μ—­ν•  > Ingest
    • λ‹€μ–‘ν•œ μ†ŒμŠ€(DB, CSV, Log...)λ‘œλΆ€ν„° 데이터λ₯Ό κ°€μ Έλ‹€, μ‘°μž‘ ν›„ Elasticsearchμ—κ²Œ μ „λ‹¬ν•˜λŠ” μ—­ν• 
  2. Elasticsearch

    • μ—­ν•  > Store, Search, Analyze
    • 직접 μˆ˜μ§‘ 데이터 or Logstash μˆ˜μ§‘ 데이터 > 관리 or μ‘°μž‘(검색)
  3. 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 핡심 κ°œλ…

  1. ν΄λŸ¬μŠ€ν„°

    • λ…Έλ“œμ˜ 집합
    • ν•˜λ‚˜ μ΄μƒμ˜ λ…Έλ“œ 집합
  2. λ…Έλ“œ

    • μ—˜λΌμŠ€ν‹±μ„œμΉ˜κ°€ μ„€μΉ˜λœ μ„œλ²„(컴퓨터)
  3. 인덱슀

    • λΉ„μŠ·ν•œ νŠΉμ„±μ„ 가진 λ¬Έμ„œμ˜ 집합
    • λ°μ΄ν„°λ² μ΄μŠ€ μ—­ν• 
  4. νƒ€μž…

    • λ„νλ¨ΌνŠΈ 집합
    • ν…Œμ΄λΈ” μ—­ν• 
  5. λ„νλ¨ΌνŠΈ

    • 데이터 μ €μž₯ λ‹¨μœ„
    • λ ˆμ½”λ“œ μ—­ν• (***)
    • JSON 포맷
  6. μƒ€λ“œ&λ¦¬ν”Œλ¦¬μΉ΄

    • λΆ„μ‚° ν™˜κ²½μ„ μœ„ν•œ μš”μ†Œ

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λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•œ 도ꡬ

  1. curl
  2. Postman, Insomnia λ“± REST Client
  3. Kibana > Dev Tools

Index(DB, ν…Œμ΄λΈ”), Document(데이터(ν–‰))

Index CRUD

  • Index μ‘°μž‘

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}'



경고메세지 제거

profile
μ°¨κ·Όμ°¨κ·Ό ν•˜λ‚˜μ”©

0개의 λŒ“κΈ€