Intro::
_update_by_query ์ _delete_by_query ์ ๋ํด์ ์์๋ด
์๋ค.
์๋ผ์คํฑ์์น ์ค๋ฌด ๊ฐ์ด๋์ ์ํ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์์ต๋๋ค.
_update_by_query
batch
_update_by_query ์์ ํ ๋ฒ์ ์ฒ๋ฆฌ๋๋ ๋ฌธ์์ ๊ทธ๋ฃน์ ์๋ฏธํ๋ฉฐ, scroll_size ํ๋ผ๋ฏธํฐ๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ 1000๊ฐ์ ๋ฌธ์๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌํ์ง๋ง, ํ์์ ๋ฐ๋ผ ์ด๋ฅผ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
slice
์ฌ๋ผ์ด์ฑ์ ์ฌ์ฉํ๋ฉด Elasticsearch๋ ์
๋ฐ์ดํธํ ๋ฌธ์๋ค์ ์ฌ๋ฌ ์ฌ๋ผ์ด์ค๋ก ๋๋๊ณ ๊ฐ ์ฌ๋ผ์ด์ค๋ฅผ ๋ณ๋์ ์์
์ผ๋ก ๋ณ๋ ฌ ์ฒ๋ฆฌํฉ๋๋ค. ์๋ฅผ ๋ค์ด, 1,000,000๊ฐ์ ๋ฌธ์๋ฅผ 10๊ฐ์ ์ฌ๋ผ์ด์ค๋ก ๋๋๋ฉด, ๊ฐ ์ฌ๋ผ์ด์ค๋ 100,000๊ฐ์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ฌ๋ผ์ด์ค ๋ณ๋ก batch ๋งํผ์ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ๋ฉฐ, ๋ชจ๋ ๋ฌธ์๋ฅผ ์ฒ๋ฆฌํ ๋ ๊น์ง ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค๊ณ ์ดํดํ๋ฉด ๋๋ค.
// ๋ด์ฉ ๋ณ๊ฒฝ
POST movie_search/_update_by_query?conflicts=proceed&slices=5&scroll_size=5000
{
"script": {
"source": "ctx._source.test = params.test",
"params": {
"test": "๋ณ๊ฒฝ๋์์ต๋๋ค"
},
"lang": "painless"
},
"query": {
"range": {
"prdtYear": {
"gt": 10
}
}
}
}
// ํ๋ ์ญ์
POST movie_search/_update_by_query?conflicts=proceed&slices=auto&scroll_size=5000
{
"script": {
"source": "ctx._source.remove(params.test)",
"params": {
"test": "test"
},
"lang": "painless"
},
"query": {
"range": {
"prdtYear": {
"gt": 10
}
}
}
}
JSON
๋ณต์ฌ
โข
conflicts=proceed
โฆ
๋ฒ์ ์ถฉ๋์ด ์ผ์ด๋๋ ์ ์ฅ
โข
slices=5
โฆ
5๊ฐ์ ์ฌ๋ผ์ด์ค๋ก ๋ณ๋ ฌ์์
โข
scroll_size=5000
โฆ
5000๊ฐ์ ๋ฌธ์๋ฅผ ํ๋ฒ์ ์ฒ๋ฆฌ
_delete_by_query
ํด๋น API๋ ์ง์ ํ ์ฟผ๋ฆฌ์ ์ผ์นํ๋ ๋ชจ๋ ๋ฌธ์๋ฅผ ์ญ์ ํฉ๋๋ค. _update_by_query ์ ์ ์ฌํ ๊ตฌ์กฐ๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ถ๊ธํ์
1.
ํ ์ค๋๊ฐ ๊ธฐ๋ณธ์ ์ผ๋ก 10000๊ฐ์ ๋ฌธ์๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ค์ ๋ก ๊ฒ์์ ํ์๋ 10000๊ฐ ๋ณด๋ค ๊ฐ์๊ฐ ๋ง๋ค๋ฉด ์ด๋ป๊ฒ ๋ฌธ์๋ค์ ๊ฐ์ ธ์ค๋์ง?
a.
search_after๋ฅผ ์ฌ์ฉํด์ ๋ค์ ๋ฌธ์๋ค์ ๊ฐ์ ธ์จ๋ค.
b.
์ผ๋ฐ์ ์ผ๋ก ํ์ด์ง์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ํ๋ฒ์ 10000๊ฑด ์ด์ ๊ฒ์ํ ์ผ์ด ์๊ธฐ๋ ํ๋ค๊ณ ํ๋ค.
2.
10000๊ฐ ์ด์์ ๋ฌธ์๋ฅผ ๊ฒ์ํ๊ฒ ๋ ๋, ๊ฒ์์ ํ ๋๋ง๋ค ๊ฒ์ ์กฐ๊ฑด์ ๋ถํฉํ๋ ๋ฌธ์๋ค์ด ์ ๋ ฌ๋๋ ๊ฑด์ง???
a.
๊ทธ๋ ๋ค.
b.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด pit์ ์์ฑํ์ฌ ์ฌ์ฉํ๋๋ก ๊ถ๊ณ ํ๋ค๊ณ ํ๋ค.
i.
multi index ๊ฒ์ ์์๋ ์ฌ์ฉํ ์ ์๋ค๊ณ ํ๋ค.
ii.
pit ์์ฒด๊ฐ ์ฝ์คํธ๋ฅผ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฉ๋์ง ์๋ ์์ ์ด๋ผ๋ฉด ๋ฐ๋ก ์ญ์ ํด์ฃผ๋ ๊ฒ์ด ์ข๋ค.