[Elasticsearch] ์ธ๋ฑ์ค
์ธ๋ฑ์ค๋ ์๋ผ์คํฑ์์น์์ ๊ฒ์์ ์ฌ์ฉํ๋๋ฐ ์์ด ๊ฐ์ฅ ์ค์ฌ์ด ๋๋ ์์๋ค.
๋ง ๊ทธ๋๋ก ๊ฒ์์ ์ํ ์ธ๋ฑ์ค ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ ๊ฐ์ฅ ํฐ ํ์ธ ๊ฒ์ด๋ค.
๊ณจ์๋ ์ด๋ ๋ค.
๊ฒ์์ฉ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ ์ธ๋ฑ์ค๋ฅผ ์ฒ์ ์์ฑํ ๋ ์ง์ ํด์ฃผ๊ณ ,
๊ฒ์์ฉ๋ฐ์ดํฐ๋ ๊ทธ๋ ๊ฒ ๋ง๋ค์ด๋ ์ธ๋ฑ์ค์ ๋ฃ์ด๋๊ณ ,
๊ฒ์์ ํ ๋๋ ์ธ๋ฑ์ค๋ฅผ ํตํด์ ์กฐ๊ฑด์ ๊ฑธ๊ณ ๊บผ๋ด์ค๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์ด๋ป๊ฒ๋ ์๋ผ์คํฑ์์น ํ๊ฒฝ์ ๊ตฌ์ถํ๋ค๋ฉด, ๋์ถฉ ๋ค์๊ณผ ๊ฐ์ด ์ ์ ๊ฐ๋ฅํ ์๋ผ์คํฑ ๋งํฌ๊ฐ ์์ ๊ฒ์ด๋ค.
์ด ๋งํฌ์ ์ธ์ฆํ ํฐ์ ํตํด์ Restful API๋ก ์๋ผ์คํฑ์์น๋ฅผ ์ ์ดํ ์ ์๋ค.
๋ก๊ทธ์ธ ํ์ ์ ์ํ ๋ ๋ ๋ฆฌ๋ ์ ๊ฑธ
๊บผ๋ด์ฐ๋ฉด ๋๋ค.
๊ทธ๋ฆฌ๊ณ .../_cat/indices ๋งํฌ๋ก ์ ์์ ํ๋ฉด, ์ธ๋ฑ์ค ๋ชฉ๋ก์ ์กฐํํ ์ ์๋ค.
๋ง๋ค.
์ธ๋ฑ์ค ์์ฑ
์ธ๋ฑ์ค๋ฅผ ์์ฑํ๋ ค๋ฉด "PUT /์ธ๋ฑ์ค๋ช
"์ ํํ๋ก API๋ฅผ ํธ์ถํด์ฃผ๋ฉด ๋๋ค.
๋๋ ํ์์ ์ฆ๊ฒจ์ฐ๋ VSCODE ํ์ฅ Rest client๋ก API๋ฅผ ์ฃผ๋ก ์๋๋ฐ, ํธํ๊ฑธ๋ก ์๋ฌด๊ฑฐ๋ ์ฐ๋ฉด ๋๋ค.
@host = ํธ์คํธ...
@token = ์์ ํ ํฐ...
###
PUT https://{{host}}/products
Content-Type: application/json
Authorization: {{token}}
{
"settings": {},
"mappings": {
"properties": {
"product_id": { "type": "integer" },
"product_name": { "type": "text" },
"shop_id": { "type": "integer" },
"shop_name": { "type": "text" },
"color": { "type": "text" },
"brand_id": { "type": "integer" },
"brand_name": { "type": "text" },
"description": { "type": "text" },
"category_names": { "type": "text" }
}
}
}
###
์ฐ์ Authorization ํค๋์ ์ธ์ฆํ ํฐ์ ๋ฃ์ด์ค์ผ ํ๋ค.
setting์ ์ก๋คํ ์ธ๋ฑ์ค ์ค์ ๋ค์ด ๋ค์ด๊ฐ๋ ๋ถ๋ถ์ธ๋ฐ ๊ทธ๊ฑด ๋์ค์ ๋ณด์.
mappings์ properties๊ฐ ์ธ๋ฑ์ค์ ๋ชฉ๋ก์ ์ง์ ํด์ฃผ๋ ๋ถ๋ถ์ด๋ค.
์ ๋ ๊ฒ ์ก์๋์ ์์ฑ๋ค์ ์ ๋ถ ๊ฒ์์กฐ๊ฑด์ผ๋ก ์ฌ์ฉํ ์๊ฐ ์๋ค.
์ ๋ ๊ฒ ํด์ ๋ฌธ์ ์์ด ํธ์ถ๋๋ค๋ฉด
์์ ๊ฐ์ด ์๋ต์ด ์ฌ ๊ฒ์ด๋ค.
์ ์์ ์ผ๋ก ์์ฑ์ด ๋๋ค๋ฉด ์ธ๋ฑ์ค ๋ชฉ๋ก์์๋ ์ถ๊ฐ๊ฐ ๋ ๊ฒ์ด๊ณ

"GET /์ธ๋ฑ์ค๋ช "์ ํํ๋ก ์ ๊ทผํด์ ์ธ๋ฑ์ค ์ ๋ณด๋ฅผ ์กฐํํ๋๊ฒ ๊ฐ๋ฅํด์ง๋ค.

์ธ๋ฑ์ค ์ฌ๋ฐฐํฌ (๋ฌด์ค๋จ)
์ธ๋ฑ์ค์๋ ์์ ์ด๋ผ๋ ๊ฐ๋
์ด ๋ณ๋ก ์๋ค.
์์ ๊ธฐ๋ฅ ์์ฒด๊ฐ ์์ฃผ ์ ํ์ ์ผ๋ก ์ ๊ณต๋๊ธฐ๋ ํ๊ณ ๊ถ์ฅ๋์ง๋ ์๋๋ค.
๊ทธ๋์ ์ธ๋ฑ์ค์ ๊ตฌ์ฑ์ด๋ ํํ๊ฐ ๋ฐ๋ ์ผ์ด ์๋ค๋ฉด, ์ธ๋ฑ์ค๋ฅผ ์์ ํ๋ ๊ฒ ์๋๋ผ ์ธ๋ฑ์ค๋ฅผ ์๋ก ๋ง๋ ๋ค์์ ๊ต์ฒด๋ฅผ ํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
ํฐ ๋ฌธ์ ์์ด ๊ต์ฒด๋ฅผ ํ๋ ค๋ฉด alias๋ฅผ ๋ฏธ๋ฆฌ ๋ถ์ฌ๋ฌ์ผ ํ๋ค.
ํด๋ผ์ด์ธํธ๋ค์ ์ค์ ์ธ๋ฑ์ค๋ช
์ด ์๋๋ผ alias๋ฅผ ๋ฐ๋ผ๋ณด๊ฒ ํ๊ณ , alias๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฒ๋ง ๋ฐ๊พธ๋ฉด ๋๊ธฐ ๋๋ฌธ์ด๋ค.
alias๋ "POST /_aliases" API๋ฅผ ํตํด ์ ์ดํ ์ ์๋ค.
๋ค์๊ณผ ๊ฐ์ด ํด๋๋ฉด products๋ผ๋ ์ธ๋ฑ์ค์ release๋ผ๋ ๋ณ๋ช
์ ๋ถ์ฌ์ฃผ๊ฒ ๋๋ค.

๊ทธ๋ผ ์ด์ ์ ๊ฑธ ๊ธฐ๋ฐ์ผ๋ก ๊ต์ฒด์์
์ ํ ์ ์๊ฒ ๋๋ค.
๊ต์ฒดํ ์ธ๋ฑ์ค๋ฅผ ์๋ก ๋ง๋ค๊ณ

ํ์ํ๋ค๋ฉด ๊ธฐ์กด ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ reindex๋ก ์ฎ๊ฒจ์ค๋ค.
products์ ๊ฒ์ ๋ฐ์ดํฐ๋ฅผ products2์ ๋ฐ์์ํค๊ณ ์ถ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ํ๋ฉด ๋๋ค.
์ด๊ฑด ๋ถํ๊ฐ ๊ต์ฅํ ๋ง์ด ๊ฑธ๋ฆฌ๋ ์์
์ด๋ ์ํฉ๋ด์ ์ ํด์ผํ๋ค.
๋ฐ์ดํฐ๊ฐ ๋ง์ผ๋ฉด ์ด๊ฑฐ ํ๋ค ๋ป์ ์๋ ์๋ค.
๋ฌธ์ ์์ด ์ธ๋ฑ์ค ์ค๋น๊ฐ ๋ค ๋๋ค๋ฉด, ๋ค์๊ณผ ๊ฐ์ด ๊ต์ฒด๋ฅผ ํด์ค ์ ์๋ค.
๊ทธ๋ฅ ๋ณ๊ฑฐ ์๋ค.
์๊น์ฒ๋ผ ๋ณ๋ช
์ ๋ถ์ฌ์ฃผ๋, ๊ธฐ์กด ๋ณ๋ช
์ ์ญ์ ํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋์์ ์ฒ๋ฆฌํด์ฃผ๋ ๊ฒ์ผ ๋ฟ์ด๋ค.
์ด๋ฌ๋ฉด ์ด์ release๊ฐ ๊ต์ฒด๋ products2๋ฅผ ๊ฐ๋ฆฌํค๊ฒ ๋๋ค.
๊ธฐ์กด์ product ์ธ๋ฑ์ค๋ ์ง์ฐ๋ ๋ญ ํ๋ ๋ง๋๋ก ํด๋ ๋๋ค.
์ ๊ทธ๋ฆฌ๊ณ alias ๋ชฉ๋ก์ /_cat/aliases๋ก ๋ณผ ์ ์๋ค.
release๊ฐ product2๋ฅผ ๊ฐ๋ฆฌํค๋ ๊ฒ์ ๋ณผ ์ ์๋ค.
์ด์ธ์ ์ธ๋ฑ์ค๋ฅผ ์ข
๋ฃ์ํค๋๊ฑด
"POST /์ธ๋ฑ์ค๋ช
/_close"
์ธ๋ฑ์ค๋ฅผ ๋ค์ ์คํ์ํค๋๊ฑด
"POST /์ธ๋ฑ์ค๋ช
/_settings"
์ธ๋ฑ์ค๋ฅผ ์ญ์ ํ๋๊ฑด
"DELETE /์ธ๋ฑ์ค๋ช
"
๋ฑ์ผ๋ก ์ฒ๋ฆฌํ ์ ์๋ค.
์ญ์ ๋ ํ๋ฒ ํ๋ฉด ๋์ดํฌ ์ ์์ผ๋ ์ ์คํ๊ฒ ํ๊ธธ ๋ฐ๋๋ค.
๋ค์ ํฌ์คํธ์์๋ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ๊ณผ ๊ฒ์๋ฒ ๋ฑ์ ๋ค๋ค๋ณด๊ฒ ๋ค.
์ฐธ์กฐ
https://www.elastic.co/guide/en/elasticsearch/reference/current/cat-indices.html
https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-get-index.html