Hallo,
wir verwenden bei einem Projekt Elastic Search und befüllen diese über eine Shopware CLI Plugin und der API.
D.h. es wird über die Console eine Import/Update Comand aufgerufen, welcher dann über die API Ressource die Artikel updatet.
$this->articleResource = \Shopware\Components\Api\Manager::getResource('Article');
...
...
$this->articleResource->update($articleID, $article);
Das klappt soweit wunderbar und die Artikel sind vorhanden bzw. geändert im Backend von Shopware:
Macht man im Shopware eine Änderung des Artikels, so wird dies in die Tabelle s_es_backlog geschrieben. Somit weiß der Backlog Service, dass dieser Artikel neu nach Elastic Search synchronisert werden muss. Über die API und ein Artikel Update wird dieser Eintrag leider nicht geschrieben. Ich kann leider nichtherausfinden warum. Laut Shopware Support funktioniert das und Sie können das Problem nicht nachstellen!
Was ich bis jetzt herausgefunden habe:
Elastic Search Backlog Registrierung:
https://github.com/shopware/shopware/blob/5.2/engine/Shopware/Bundle/ESIndexingBundle/services.xml#L129
Der Backloger wird auf doctrine.event_subscriber Registriert.
https://github.com/shopware/shopware/blob/384666b210810803b75cb3aa47c131edb72fddfe/engine/Shopware/Components/DependencyInjection/Compiler/DoctrineEventSubscriberCompilerPass.php#L36
Somit sollte der Service bei jedem Model Event aufgerufen werden.Dies ist ja auch nötig um die Artikel Updates in die Backlog Tabelle zu schreiben.
Wie bereits erwähnt, klappt dies beim Ändern von Artilkel im Backend. Aber über unser Consolen Plugin (CLI) eben nicht.
Hat jemand dazu eine Idee, warum dies nicht funktioniert?
Danke & Viele Grüße
ottscho
P.S. ich bin für jeden Tipp danbkar.