Pim-community-dev: 2.1.8 : CLI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œํ’ˆ์„ ๊ฐ€์ ธ์˜ฌ ๋•Œ 'searchunique_idx' ํ‚ค์— ๋Œ€ํ•œ ์ค‘๋ณต ์ž…๋ ฅ

์— ๋งŒ๋“  2018๋…„ 04์›” 06์ผ  ยท  3์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: akeneo/pim-community-dev

SKU๋งŒ ์žˆ๋Š” ํ”ผ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ๋ช…๋ น์ค„์„ ์‚ฌ์šฉํ•˜๋Š” Akeneo์˜ ์ด๋ฏธ์ง€ ์—ด์€ ๋‹ค์Œ ๋ช…๋ น๊ณผ ํ•จ๊ป˜ ์‹คํŒจํ•ฉ๋‹ˆ๋‹ค.

[2018-04-06 15:35:24] batch.ERROR: Encountered an error executing the step: 
An exception occurred while executing 'INSERT INTO pim_catalog_completeness 
(ratio, missing_count, required_count, locale_id, channel_id, product_id) VALUES (?, ?, ?, ?, ?, ?)'
with params [100, 0, 1, 39, 1, 4404]:  
SQLSTATE[23000]: Integrity constraint violation: 
1062 Duplicate entry '1-39-4404' for key 'searchunique_idx' [] []

์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ? ์•„๋‹ˆ๋ฉด ์–ด๋–ป๊ฒŒ ๊ณ ์น  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด์ƒํ•œ ๋ถ€๋ถ„์€ ํ‚ค๊ฐ€ ํ•ด๋‹น ํ…Œ์ด๋ธ”์˜ ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ID 4404๋ฅผ ๊ฐ€์ง„ ์ œํ’ˆ๋„ ์žˆ์„ ๊ฒƒ์ด๋ผ๊ณ  ์ œ์•ˆํ•˜์ง€๋งŒ ์‹ค์ œ๋กœ๋Š” ์—†๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์—…๋ฐ์ดํŠธ: ์ถ”๊ฐ€ ๊ฒ€์‚ฌ์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—…๋กœ๋“œํ•œ ํŒŒ์ผ์— ๋™์ผํ•œ SKU๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์žˆ๋Š” ๊ฒƒ์œผ๋กœ ๋‚˜ํƒ€๋‚ฌ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ๋‹จ์ผ ํŠธ๋žœ์žญ์…˜์œผ๋กœ ์ˆ˜ํ–‰๋ฉ๋‹ˆ๊นŒ? (๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ถฉ๋Œํ•˜๋Š” ID๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ด์œ ๋ฅผ ์„ค๋ช…ํ•  ์ˆ˜ ์žˆ์Œ).

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

2๊ฐœ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ์ดํ„ฐ ๋ณต์ œ
๋‹น์‹ ์˜ ์ œ์•ˆ์ด ๋งž์Šต๋‹ˆ๋‹ค: ๊ฐ€์ ธ์˜ค๊ธฐ ํŒŒ์ผ์— ๋™์ผํ•œ sku์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Elastic Search ์ธ๋ฑ์Šค๋Š” ์ œ๊ฑฐ๋œ ์ œํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” Elasticsearch๊ฐ€ ์‚ญ์ œ๋œ ์ œํ’ˆ์˜ ๊ธฐ๋ก์„ ์ƒ‰์ธ์— ๋ณด๊ด€ํ•˜๊ณ  ์ œํ’ˆ ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์‹คํ–‰๋˜๋Š” ์™„์ „์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ๋“  '๊ณต๊ธ‰'ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ Akeneo๊ฐ€ ๊ธฐ๋ณธ ์ œํ’ˆ ๋ณ€ํ˜•์˜ ๋ชจ๋“  ES ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์€ ์ œํ’ˆ ๋ชจ๋ธ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜๋™์œผ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‘ ๊ฐ€์ง€ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ์›์ธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚ด ์ž˜๋ชป์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์–ด๋Š ๊ณณ์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ œํ’ˆ์˜ ์ค‘๋ณต ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ณ  ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊ทธํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…:
๋ช…๋ น์ค„์—์„œ ๋ชจ๋“  ES ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
bin/console akeneo:elasticsearch:reset-indexes
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
bin/console pim:product:index --all
bin/console pim:product-model:index --all

๋ชจ๋“  3 ๋Œ“๊ธ€

2๊ฐœ์˜ ์‹œ๋‚˜๋ฆฌ์˜ค์—์„œ ์ด ๋ฌธ์ œ๋ฅผ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์ ธ์˜ค๊ธฐ ๋ฐ์ดํ„ฐ ๋ณต์ œ
๋‹น์‹ ์˜ ์ œ์•ˆ์ด ๋งž์Šต๋‹ˆ๋‹ค: ๊ฐ€์ ธ์˜ค๊ธฐ ํŒŒ์ผ์— ๋™์ผํ•œ sku์˜ ์ธ์Šคํ„ด์Šค๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ ์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Elastic Search ์ธ๋ฑ์Šค๋Š” ์ œ๊ฑฐ๋œ ์ œํ’ˆ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด์œ ํ•ฉ๋‹ˆ๋‹ค.
์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‹ค๋ฅธ ๊ฒฝ์šฐ๋Š” Elasticsearch๊ฐ€ ์‚ญ์ œ๋œ ์ œํ’ˆ์˜ ๊ธฐ๋ก์„ ์ƒ‰์ธ์— ๋ณด๊ด€ํ•˜๊ณ  ์ œํ’ˆ ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜จ ํ›„ ์‹คํ–‰๋˜๋Š” ์™„์ „์„ฑ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์–ด๋–ป๊ฒŒ๋“  '๊ณต๊ธ‰'ํ•˜๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์€ Akeneo๊ฐ€ ๊ธฐ๋ณธ ์ œํ’ˆ ๋ณ€ํ˜•์˜ ๋ชจ๋“  ES ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ฑฐํ•˜์ง€ ์•Š์€ ์ œํ’ˆ ๋ชจ๋ธ์„ ์ œ๊ฑฐํ•˜๊ฑฐ๋‚˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜๋™์œผ๋กœ ๋ ˆ์ฝ”๋“œ๋ฅผ ์ œ๊ฑฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋‘ ๊ฐ€์ง€ ์ค‘ ์–ด๋Š ๊ฒƒ์ด ์›์ธ์ธ์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์ง€๋งŒ ๋‘ ๋ฒˆ์งธ ๊ฒฝ์šฐ์ผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๋‚ด ์ž˜๋ชป์ž…๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์–ด๋Š ๊ณณ์—์„œ๋„ ์ด๋Ÿฌํ•œ ์ œํ’ˆ์˜ ์ค‘๋ณต ๋ ˆ์ฝ”๋“œ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๊ณ  ํŒŒ์ผ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜๋„ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋””๋ฒ„๊ทธํ•˜๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์› ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ์ฑ…:
๋ช…๋ น์ค„์—์„œ ๋ชจ๋“  ES ์ธ๋ฑ์Šค๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
bin/console akeneo:elasticsearch:reset-indexes
๊ทธ๋Ÿฐ ๋‹ค์Œ ๋‹ค์‹œ ๋นŒ๋“œํ•ฉ๋‹ˆ๋‹ค.
bin/console pim:product:index --all
bin/console pim:product-model:index --all

๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. @wigman ์—์„œ ์ œ๊ณตํ•œ ์†”๋ฃจ์…˜์ด ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค
ํ•œ ํ™˜๊ฒฝ์—์„œ ๋‹ค๋ฅธ ํ™˜๊ฒฝ์œผ๋กœ DB๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ ์ธ๋ฑ์Šค๊ฐ€ ํ™•์‹คํžˆ ๊ฐ™์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

@wigman ์ด ์ œ์•ˆํ•œ ์†”๋ฃจ์…˜์€ ์ˆ˜์ฒœ ๊ฐœ์˜ ์ œํ’ˆ์„ ๋ณด์œ ํ•œ ์†Œ๊ทœ๋ชจ ๋งค์žฅ์—์„œ๋งŒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
bin/console akeneo:elasticsearch:reset-indexes ๋ช…๋ น์€ ์ธ๋ฑ์Šค์—์„œ ๋ชจ๋“  ๊ฒƒ์„ ์ œ๊ฑฐํ•œ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹ค์‹œ ๋Œ์•„์˜ฌ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ ค์•ผ ํ•ฉ๋‹ˆ๋‹ค. 150,000๊ฐœ ์ด์ƒ์˜ ์ œํ’ˆ ๋ชจ๋ธ๊ณผ 1,000๊ฐœ ์ด์ƒ์˜ ์ œํ’ˆ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฌ์ƒ‰์ธํ•˜๋Š” ๋ฐ ์ตœ๋Œ€ 4์‹œ๊ฐ„์ด ๊ฑธ๋ฆด ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์˜ต์…˜์ด ์•„๋‹™๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰