OpenSearch - 3sam5oh/webtoon-search-service GitHub Wiki
OpenSearch JAVA USER_GUIDE ๊ณต์ ๋งํฌ
OpenSearch Docker Image ๊ณต์ ๋งํฌ, OpenSearch Docker Image Version ๋งํฌ
OpenSearch docker-compose ๊ณต์ ๋งํฌ
Note
AWS OpenSearch Service๋ฅผ Docker Image๋ก ํตํด local ํ๊ฒฝ์์ ๊ตฌํ
๋ณด์ ํ๋ฌ๊ทธ๊ฐ ๋นํ์ฑํ ๋์ด ์์ต๋๋ค. Product ํ๊ฒฝ์ ์ ์ฉ x
OpenSearch 2.15 ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, Nori ํ๊ตญ์ด ํํ์ ๋ถ์๊ธฐ ํ๋ฌ๊ทธ์ธ์ ์๋์ผ๋ก ์ค์นํฉ๋๋ค.
์ด ๊ฐ์ด๋๋ Docker์ Docker Compose๋ฅผ ์ฌ์ฉํ์ฌ OpenSearch ๋ก์ปฌ ๊ฐ๋ฐ ํ๊ฒฝ์ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํฉ๋๋ค. ์ด ์ค์ ์ OpenSearch์ OpenSearch Dashboards๋ฅผ ํฌํจํ๋ฉฐ, ๋ค์ํ ํ๊ฒฝ ๋ณ์์ ํ๋ฌ๊ทธ์ธ ์ค์ ์ด ํฌํจ๋์ด ์์ต๋๋ค. ๋ํ ์ด๊ธฐํ ์คํฌ๋ฆฝํธ๋ฅผ ํตํด ๋ฐ์ดํฐ ์ธ๋ฑ์ฑ์ ์๋ํํฉ๋๋ค.
-
๋น์ฉ ์ ๊ฐ
: ์ค์ OpenSearch ํด๋ผ์ฐ๋ ์๋น์ค๋ ๋์ ๋น์ฉ์ด ๋ฐ์ํฉ๋๋ค. ํ ์คํธ ๋ฐ ๊ฐ๋ฐ ๊ณผ์ ์์๋ ๋ก์ปฌ์์ ๊ตฌํํ๋ฉด ๋น์ฉ์ ์ ๊ฐํ ์ ์์ต๋๋ค. -
ํ๊ฒฝ ์ผ๊ด์ฑ
: OpenSearch image๋ฅผ ํ์ฉํ๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์์ ๋์ผํ ํ๊ฒฝ์ ๊ณต์ ํ๊ธฐ ์ข์ต๋๋ค. -
๋จ์ผ ๋ ธ๋ ํด๋ฌ์คํธ ํ์ฉ
: ๊ฐํธํ๊ฒ ํ ์คํธ ํ๊ฒฝ์ ๊ตฌ์ถํ ์ ์์ต๋๋ค. -
๋น ๋ฅธ ํผ๋๋ฐฑ, ๋คํธ์ํฌ ์ง์ฐ x
: ๋ณ๊ฒฝ ์ฌํญ์ ์ฆ์ ํ์ธํ ์ ์๊ณ , ๋คํธ์ํฌ ์ง์ฐ ์์ด ๋น ๋ฅด๊ฒ ์์ ์ด ๊ฐ๋ฅํฉ๋๋ค.
ํ์ฌ ํ๋ก์ ํธ๋ ๋ค์๊ณผ ๊ฐ์ ๊ตฌ์กฐ๋ก ์ค๊ณ๋์ด ์์ต๋๋ค.
project-root/
โโโ docker-compose.dev.yml
โโโ docker/
โ โโโ Dockerfile-opensearch
โโโ opensearch-init/
โโโ init-opensearch.sh
โโโ setup-opensearch.sh
โโโ webtoon-mapping.json
%%{init: {'theme': 'base', 'themeVariables': { 'fontSize': '30px', 'fontFamily': 'Arial' }}}%%
flowchart LR
A("fa:fa-play ์์")
B("fab:fa-docker Docker<br>Compose")
C("fa:fa-database<br>OpenSearch DB")
D("fa:fa-chart-line<br>OpenSearch<br>Dashboards")
E{"fa:fa-question<br>์ธ๋ฑ์ค<br>์กด์ฌ?"}
F["fa:fa-plus-square ์ธ๋ฑ์ค ์์ฑ"]
G["fa:fa-cloud-download-alt ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ"]
H["fa:fa-file-import ์ธ๋ฑ์ฑ"]
I["fa:fa-fast-forward ์ด๊ธฐํ ๊ฑด๋๋ฐ๊ธฐ"]
K("fa:fa-flag-checkered ์๋ฃ")
A --> B
B --> C & D
C --> E
E -->|No| F
F --> G
G --> H
E -->|Yes| I
H & I --> K
subgraph ๋ฐ์ดํฐ์ฒ๋ฆฌ [" "]
F
G
H
end
%% ๋
ธ๋ ์คํ์ผ๋ง
classDef default fill:#f9f9f9,stroke:#333,stroke-width:2px
classDef highlight fill:#e1f5fe,stroke:#0288d1,stroke-width:3px
classDef process fill:#e8f5e9,stroke:#4caf50,stroke-width:2px
classDef decision fill:#fff3e0,stroke:#ff9800,stroke-width:2px
class A,K highlight
class B,C,D process
class E decision
class F,G,H,I process
%% ๋
ธ๋๋ณ ์คํ์ผ
style A font-weight:bold
style B font-weight:bold,fill:#dce9f1
style C font-weight:bold,fill:#fff0f5
style D font-weight:bold,fill:#f0f8ff
style E font-weight:bold
style F fill:#e6fffa
style G fill:#e6f3ff
style H fill:#fff5e6
style I fill:#f5e6ff
style K font-weight:bold
style ๋ฐ์ดํฐ์ฒ๋ฆฌ fill:none,stroke:none
%% ๋งํฌ ์คํ์ผ
linkStyle default stroke:#666,stroke-width:2px,fill:none
%% ๋
ธ๋์ ๋งํฌ ์ถ๊ฐ (์์์ฉ ๊ฐ์ ๋งํฌ)
click B "<a target='_blank' href='https://docs.docker.com/compose/'>Docker Compose Docs</a>"
click C "<a target='_blank' href='https://opensearch.org/docs/latest/'>OpenSearch Docs</a>"
click D "<a target='_blank' href='https://opensearch.org/docs/latest/dashboards/index/'>OpenSearch Dashboards Docs</a>"
-
docker-compose.dev.yml
: -opensearch-node1
์๋น์ค๋OpenSearch
์ธ์คํด์ค๋ฅผ ์ค์ ํฉ๋๋ค. ๋ค์ํ ํ๊ฒฝ ๋ณ์๋ฅผ ํตํด ๋ฉ๋ชจ๋ฆฌ ์ค์ , ๋ ธ๋ ์ด๋ฆ, ํด๋ฌ์คํฐ ์ด๋ฆ ๋ฑ์ ์ง์ ํ ์ ์์ต๋๋ค.-
opensearch-dashboards
์๋น์ค๋OpenSearch Dashboards
๋ฅผ ์ค์ ํฉ๋๋ค. ์ด๋OpenSearch
๋ฐ์ดํฐ๋ฅผ ์๊ฐํํ๊ณ ๊ด๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. -
volumes
์networks
๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ง์์ฑ๊ณผ ๋คํธ์ํฌ ์ฐ๊ฒฐ์ ๊ด๋ฆฌํฉ๋๋ค.
-
-
Dockerfile-opensearch
:- OpenSearch 2.15.0 ์ด๋ฏธ์ง๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, Nori ํ๊ตญ์ด ํํ์ ๋ถ์๊ธฐ ํ๋ฌ๊ทธ์ธ์ ์ค์นํฉ๋๋ค.
- ์ด๊ธฐํ ์คํฌ๋ฆฝํธ๋ฅผ ์ปจํ ์ด๋์ ๋ณต์ฌํ๊ณ ์คํ ๊ถํ์ ์ค์ ํฉ๋๋ค.
-
init-opensearch.sh
:-
OpenSearch
๊ฐ ์ค๋น๋ ๋๊น์ง ๋๊ธฐํ ํ, ์ธ๋ฑ์ค๊ฐ ์์ผ๋ฉด ์๋ก์ด ์ธ๋ฑ์ค๋ฅผ ์์ฑํ๊ณ ๋งคํ ์ค์ ์ ์ ์ฉํฉ๋๋ค. -
setup-opensearch.sh
์คํฌ๋ฆฝํธ๋ฅผ ์คํํ์ฌ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ฑ์ฑํฉ๋๋ค.
-
-
setup-opensearch.sh
:- ์ธ๋ถ API์์ ์นํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์
OpenSearch
์์ธ๋ฑ์ฑ
ํฉ๋๋ค.
- ์ธ๋ถ API์์ ์นํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์
-
webtoon-mapping.json
:- ์ธ๋ฑ์ค ์ค์ ๋ฐ ๋งคํ์ ์ ์ํ์ฌ
OpenSearch
๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๋ถ์ํ๊ณ ์ ์ฅํ ์ ์๋๋ก ํฉ๋๋ค.
- ์ธ๋ฑ์ค ์ค์ ๋ฐ ๋งคํ์ ์ ์ํ์ฌ
docker-compose -f docker-compose.dev.yml up --build
(or)
docker-compose -f docker-compose.dev.yml up -d
- bash ์คํฌ๋ฆฝํธ ์คํ์ด ์์๋๋ฉด ๋ค์๊ณผ ๊ฐ์ ๋ก๊ทธ๋ฅผ ํ์ธํ ์ ์๋ค.
- ์ ์ ํ JVM ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์กฐ์ ํ์ฌ ์ต์ ํํฉ๋๋ค.
- OPENSEARCH_JAVA_OPTS=-Xms4g -Xmx4g # JVM ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ต๋ 4GB๋ก ์ค์
๊ธฐ์กด 8GB ์ค์ ์
4GB ์ค์ ์
ํ๋ก์ ํธ์ ์ ์ฒด ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ๋ ๋ค์ ๋งํฌ์์ ํ์ธํ ์ ์์ต๋๋ค: ํ๋ก์ ํธ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
-
docker-compose.dev.yml
: ์ฌ๊ธฐ์์ ํ์ธ -
Dockerfile-opensearch
: ์ฌ๊ธฐ์์ ํ์ธ -
init-opensearch.sh
: ์ฌ๊ธฐ์์ ํ์ธ -
setup-opensearch.sh
: ์ฌ๊ธฐ์์ ํ์ธ -
webtoon-mapping.json
: ์ฌ๊ธฐ์์ ํ์ธ