Update/Delete By Query API
๐Ÿ™‰

Update/Delete By Query API

Created
May 21, 2024 05:38 AM
Last edited time
Last updated May 21, 2024
Tags
ElasticSearch
Language
URL

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 } } } }
  • conflicts=proceed
    • ๋ฒ„์ „ ์ถฉ๋Œ์ด ์ผ์–ด๋‚˜๋„ ์ €์žฅ
  • slices=5
    • 5๊ฐœ์˜ ์Šฌ๋ผ์ด์Šค๋กœ ๋ณ‘๋ ฌ์ž‘์—…
  • scroll_size=5000
    • 5000๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌ
ย 

_delete_by_query

ํ•ด๋‹น API๋Š” ์ง€์ •ํ•œ ์ฟผ๋ฆฌ์— ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์„œ๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. _update_by_query ์™€ ์œ ์‚ฌํ•œ ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
ย 
ย 

๊ถ๊ธˆํ•œ์ 

  1. ํ•œ ์ƒค๋“œ๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ 10000๊ฐœ์˜ ๋ฌธ์„œ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๋ฐ, ์‹ค์ œ๋กœ ๊ฒ€์ƒ‰์„ ํ–ˆ์„๋•Œ 10000๊ฐœ ๋ณด๋‹ค ๊ฐœ์ˆ˜๊ฐ€ ๋งŽ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ๋ฌธ์„œ๋“ค์„ ๊ฐ€์ ธ์˜ค๋Š”์ง€?
    1. search_after๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋‹ค์Œ ๋ฌธ์„œ๋“ค์„ ๊ฐ€์ ธ์˜จ๋‹ค.
    2. ์ผ๋ฐ˜์ ์œผ๋กœ ํŽ˜์ด์ง•์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ํ•œ๋ฒˆ์— 10000๊ฑด ์ด์ƒ ๊ฒ€์ƒ‰ํ•  ์ผ์ด ์—†๊ธฐ๋„ ํ•˜๋‹ค๊ณ  ํ•œ๋‹ค.
  1. 10000๊ฐœ ์ด์ƒ์˜ ๋ฌธ์„œ๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ฒŒ ๋ ๋•Œ, ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ๋งˆ๋‹ค ๊ฒ€์ƒ‰ ์กฐ๊ฑด์— ๋ถ€ํ•ฉํ•˜๋Š” ๋ฌธ์„œ๋“ค์ด ์ •๋ ฌ๋˜๋Š” ๊ฑด์ง€???
    1. ๊ทธ๋ ‡๋‹ค.
    2. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด pit์„ ์ƒ์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋„๋ก ๊ถŒ๊ณ ํ•œ๋‹ค๊ณ  ํ•œ๋‹ค.
      1. multi index ๊ฒ€์ƒ‰ ์‹œ์—๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.
      2. pit ์ž์ฒด๊ฐ€ ์ฝ”์ŠคํŠธ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์‹œ์ ์ด๋ผ๋ฉด ๋ฐ”๋กœ ์‚ญ์ œํ•ด์ฃผ๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
ย 

References::

Loading Comments...