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
๊ฐ์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. @wigman ์์ ์ ๊ณตํ ์๋ฃจ์
์ด ๋์์ด ๋์์ต๋๋ค. ๊ฐ์ฌํฉ๋๋ค
ํ ํ๊ฒฝ์์ ๋ค๋ฅธ ํ๊ฒฝ์ผ๋ก DB๋ฅผ ๋ณต์ฌํ์ฌ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋๋ฐ ์ธ๋ฑ์ค๊ฐ ํ์คํ ๊ฐ์ง ์์์ต๋๋ค.
@wigman ์ด ์ ์ํ ์๋ฃจ์
์ ์์ฒ ๊ฐ์ ์ ํ์ ๋ณด์ ํ ์๊ท๋ชจ ๋งค์ฅ์์๋ง ์๋ํฉ๋๋ค.
bin/console akeneo:elasticsearch:reset-indexes
๋ช
๋ น์ ์ธ๋ฑ์ค์์ ๋ชจ๋ ๊ฒ์ ์ ๊ฑฐํ ๋ค์ ๋ฐ์ดํฐ๊ฐ ๋ค์ ๋์์ฌ ๋๊น์ง ๊ธฐ๋ค๋ ค์ผ ํฉ๋๋ค. 150,000๊ฐ ์ด์์ ์ ํ ๋ชจ๋ธ๊ณผ 1,000๊ฐ ์ด์์ ์ ํ์ด ์๋ ๊ฒฝ์ฐ ์ฌ์์ธํ๋ ๋ฐ ์ต๋ 4์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ผ๋ฏ๋ก ์ต์
์ด ์๋๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
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