Keine Unterseiten aufrufbar nach Aktivierung von ElasticSearch

Hallo,

ich brauche mal wieder ein bisschen Hilfe mit meinem aktuellen Projekt.

Ich habe Shopware 5.2.24 installiert und alles funktioniert soweit super. Nun möchte ich allerdings ElasticSearch aktivieren, da wir einigermaßen viele Produkte haben. Ich habe alles soweit konfiguriert, meiner Meinung nach ist auch alles korrekt. Ich kann ElasticSearch über die config.php aktivieren und die Startseite aufrufen. Sobald ich allerdings versuche, eine Unterseite/Kategorie aufzurufen, bekomme ich nur „Ups! Es ist ein Fehler aufgetreten“.

Im Log steht leider nichts brauchbares, außer eine Exception „Elasticsearch\Common\Exceptions\ServerErrorResponseException:“ ohne Beschreibung oder weitere Informationen.

Ich bekomme keine Fehler bei der Erstellung des Index in ElasticSearch, alle Produkte werden geschrieben und der Vorgang wird erfolgreich beendet.

Gibt es irgendwo eine Einstellung, die ich übersehen habe?

Gibt es Fehler im ElasticSearch-Log?

Timme Hosting - schnelles nginx-Hosting

www.timmehosting.de

1 „Gefällt mir“

 

[o.e.a.s.TransportSearchAction] [w2D_UhW] [sw_shop1_20170610223900][0], node[w2D_UhWdQqWjo4S-t4MTSA], [P], s[STARTED], a[id=Eib930DLSa68iqdvicsSiQ]: Failed to execute [SearchRequest{searchType=QUERY_THEN_FETCH, indices=[sw_shop1], indicesOptions=IndicesOptions[id=38, ignore_unavailable=false, allow_no_indices=true, expand_wildcards_open=true, expand_wildcards_closed=false, allow_alisases_to_multiple_indices=true, forbid_closed_indices=true], types=[product], routing='null', preference='null', requestCache=null, scroll=null, source={
  "size" : 999999,
  "post_filter" : {
    "bool" : {
      "must" : [
        {
          "terms" : {
            "categoryIds" : [
              39,
              52,
              54,
              93,
              94,
              139,
              145
            ],
            "boost" : 1.0
          }
        },
        {
          "term" : {
            "hasAvailableVariant" : {
              "value" : true,
              "boost" : 1.0
            }
          }
        }
      ],
      "disable_coord" : false,
      "adjust_pure_negative" : true,
      "boost" : 1.0
    }
  }
}}]
org.elasticsearch.transport.RemoteTransportException: [w2D_UhW][127.0.0.1:9300][indices:data/read/search[phase/query]]
Caused by: org.elasticsearch.search.query.QueryPhaseExecutionException: Result window is too large, from + size must be less than or equal to: [10000] but was [999999]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.
        at org.elasticsearch.search.DefaultSearchContext.preProcess(DefaultSearchContext.java:202) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.query.QueryPhase.preProcess(QueryPhase.java:90) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createContext(SearchService.java:484) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:448) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:252) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:339) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:336) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$7.doRun(TransportService.java:627) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:638) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.4.1.jar:5.4.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[2017-06-11T17:58:18,471][DEBUG][o.e.a.s.TransportSearchAction] [w2D_UhW] All shards failed for phase: [query]
org.elasticsearch.search.query.QueryPhaseExecutionException: Result window is too large, from + size must be less than or equal to: [10000] but was [999999]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.
        at org.elasticsearch.search.DefaultSearchContext.preProcess(DefaultSearchContext.java:202) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.query.QueryPhase.preProcess(QueryPhase.java:90) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createContext(SearchService.java:484) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:448) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:252) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:339) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:336) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$7.doRun(TransportService.java:627) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:638) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) [elasticsearch-5.4.1.jar:5.4.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
[2017-06-11T17:58:18,471][WARN][r.suppressed] path: /sw_shop1/product/_search, params: {index=sw_shop1, type=product}
org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed
        at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseFailure(AbstractSearchAsyncAction.java:272) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.AbstractSearchAsyncAction.executeNextPhase(AbstractSearchAsyncAction.java:130) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.AbstractSearchAsyncAction.onPhaseDone(AbstractSearchAsyncAction.java:241) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.InitialSearchPhase.onShardFailure(InitialSearchPhase.java:87) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.InitialSearchPhase.access$100(InitialSearchPhase.java:47) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.InitialSearchPhase$1.onFailure(InitialSearchPhase.java:155) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.ActionListenerResponseHandler.handleException(ActionListenerResponseHandler.java:51) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$ContextRestoreResponseHandler.handleException(TransportService.java:1050) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$DirectResponseChannel.processException(TransportService.java:1154) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$DirectResponseChannel.sendResponse(TransportService.java:1132) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$7.onFailure(TransportService.java:638) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.onFailure(ThreadContext.java:623) [elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:39) [elasticsearch-5.4.1.jar:5.4.1]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
        at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131]
Caused by: org.elasticsearch.search.query.QueryPhaseExecutionException: Result window is too large, from + size must be less than or equal to: [10000] but was [999999]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.
        at org.elasticsearch.search.DefaultSearchContext.preProcess(DefaultSearchContext.java:202) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.query.QueryPhase.preProcess(QueryPhase.java:90) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createContext(SearchService.java:484) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.createAndPutContext(SearchService.java:448) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.search.SearchService.executeQueryPhase(SearchService.java:252) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:339) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.action.search.SearchTransportService$6.messageReceived(SearchTransportService.java:336) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.transport.TransportService$7.doRun(TransportService.java:627) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:638) ~[elasticsearch-5.4.1.jar:5.4.1]
        at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37) ~[elasticsearch-5.4.1.jar:5.4.1]
        ... 3 more

 

Ich kann leider nicht erkennen, wo genau das Problem liegt… Es scheint, als wäre der Index auf die Anzeige von 10.000 Ergebnissen beschränkt, die Kategorie hat aber mehr Produkte.

Ich habe schon versucht, in der config.php den Wert hochzusetzen, kommt aber leider auch beim erneuten Erstellen des Index nicht zum tragen. Eigentlich ist ElasticSearch ja genau für Shops gedacht, die eine große Menge an Produkten haben.

Gibt es da irgendwas, was ich noch beachten muss?

Ich habe genau den selber Fehler. Hast du das inzwischen lösen können?

 

 

Push!

Scheint ein gängiges Problem zu sein diese Limitierung von 10000 Produkten bei Elasticsearch.

Wirkt sich aktuell bei mir aus auf Kategorien oder Oberkategorien mit mehr als 10000 Produkten. Hier können die letzten Seiten nicht mehr aufgerufen werden und Shopware schmeißt folgende Fehlermeldung raus:

query_phase_execution_exception: Result window is too large, from + size must be less than or equal to: [10000] but was [15360]. See the scroll api for a more efficient way to request large data sets. This limit can be set by changing the [index.max_result_window] index level setting.

Außerdem wirkt sich das ganze auch auf die Sitemap Erstellung aus. Es werden nur noch 10 Produkte geschrieben. Zumindest dieses Problem hat Shopware wohl schon erkannt, da in einer neuen Version auf Github das ganze bzgl. der Sitemap gelöst wurde, allerdings wird dort mit dem Limit 10000 gearbeitet. Siehe hier:

https://github.com/shopware/shopware/commit/bb6335ae3393a67a56e7152fbdbe41580c34fdea#diff-49d665476c91ec4853c610bd804a5f85R261

Wie sieht es den mit einer Lösung für die Kategorien aus?
Einfach das Limit in der Elasticsearch Konfig hochsetzen habe ich probiert hat aber nicht geklappt. Kann aber auch sein das ich was falsch gemacht habe.

Bin für jeden Tip dankbar.

 

 

 

 

@Shopware: Habt Ihr das auf dem Schirm?

Sitemap OK, ist ja gelöst in der aktuellen Version und es gibt auch schon Sitemap-Plugins zu kaufen die das Problem umschiffen, aber wie sieht es mit den Kategorien bzw. Oberkategorien aus?

Wenn ich Searchmetrix über unsere Seite jage und die Kategorien durchblättert werden produziert das ne Menge krasser Fehler, die mein Boss, unser SEO und jeder andere wohl auch da nicht haben will. Elasticsearch ist doch gerade gedacht für Shops mit vielen Produkten, dass scheint mit aber aktuell nicht voll und ganz mit Shopware zu funktionieren???

 

 

Da sich bisher niemand gemeldet hat und ich auch kein Ticket finden konnte: Nein.

Wäre dann ja gut, wenn du ein Bugticket dafür erstellst: issues.shopware.com

Kannst es ja mal ähnlich wie hier probieren und den Wert direkt bei Index-Erstellung selbst setzen: Shopware Issuetracker

Zudem kann sich das auch mit 5.5 deutlich ändern, da hier dann mehrere Indexe erstellt werden wg. Elasticsearch 6 kompatibilität.

1 „Gefällt mir“

Danke Moritz, dein Tipp hat’s gebracht!!!

Gewusst wo. Habe schon an etlichen anderen Stellen versucht das Limit zu erhöhen :slight_smile:
 

Für alle anderen hier die schnelle Lösung:

Folgende Stelle: https://github.com/shopware/shopware/blob/5.4/engine/Shopware/Bundle/ESIndexingBundle/ShopIndexer.php#L154

so erweitern das der Wert index.max_result_window höher ist als Eure Produktanzahl:

$mergedSettings = [
    'settings' => [                 
        'number_of_shards' => $configuration->getNumberOfShards(),
        'number_of_replicas' => $configuration->getNumberOfReplicas(),                 
        'index.max_result_window' => 100000,             
    ],         
];

Bugticket gibt’s hier: https://issues.shopware.com/issues/SW-22326

Hallo,  ich habe ein ähnliches Problem nach der Aktivierung von Elasticsearch.

man kann sich im Shop bewegen, sobald man jedoch auf ein Productlisting kommt, also egal ob innerhalb einer Kategorie Produkte angezeigt werden sollen, oder man über die Suche kommt  " Ups…ein probelm…wir arbeiten dran"

im SW-Log steht

Ich verwende SW 5.5.6 und ES:

Ich habe in der config die empfohlenen Einstellungen, trotzdem klappt es nicht, hat jemand eine Idee?