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?
[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.
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:
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.
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???
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"