2016-10-06 4 views
1

Ich habe eine Solr-Abfrage (Solr Version 6.0.2), die Umsätze pro Tag gruppiert und summiert. Alles funktioniert gut mit folgenden Parametern:Solr json.facet Bereichsabfrage mit Monatsgruppierung

json.facet=sales:{ 
     type:range, 
     field:date_add, 
     start:'2016-05-31T22:00:00Z', 
     end:'2016-10-31T22:59:59Z', 
     gap:'+1DAY', 
     facet:{ 
     ordersSum:'sum(sales_value)' 
     } 
    } 

(Die angegebene Stunde 22.00.00 in Start Parameter wegen der Zeitzone, da Solr hält Daten in UTC und meine Anwendung funktioniert in Europa/Warschau Zeitzone

)

Damit habe ich nette Verkaufswerte bekam in Bezug auf Tage zwischen Start angegeben und Ende Parameter. Aber jetzt möchte ich das gleiche tun, aber für den Monat, so will ich Umsatz für Juni, Juli [..] Oktober.

Ich habe herausgefunden, dass, es ist möglich Lücke Parameter ‚+ 1 Monat‘, aber die Werte sind nicht consitent zu ändern, da Monate nicht gleich sind:

"val":"2016-05-31T22:00:00Z", 
"val":"2016-06-30T22:00:00Z", 
"val":"2016-07-30T22:00:00Z", 
"val":"2016-08-30T22:00:00Z", 
"val":"2016-09-30T22:00:00Z", 

Wie kann es sein, gesehen, die Daten standardmäßig auf die erste aufgetretene niedrigere Anzahl von Tagen (dh. Juli und August haben 31 Tage).

2016-05-31T22:00:00Z/MONTH 

Die /Monat Suffix sagt Solr zum ersten Tag des Monats auf Standard, um Mitternacht: Wieder das Problem kann durch Manipulation von Start Parameter zu lösen. Dann abgerufene Daten sieht gut aus:

"val":"2016-06-01T00:00:00Z", 
"val":"2016-07-01T00:00:00Z", 
"val":"2016-08-01T00:00:00Z", 
"val":"2016-09-01T00:00:00Z", 
"val":"2016-10-01T00:00:00Z", 

Allerdings angegebene Datumswerte sind korrekt für UTC-Zeitzone. Gibt es eine Möglichkeit für Solr, Monate richtig hinzuzufügen oder Zeitzone für Ergebnisse festzulegen?

Antwort

1

Ok, ich denke ich habe es herausgefunden. Es ist möglich, Zeitzone global für die Solr-Abfrage zu setzen, indem Sie zusätzliche Parameter für die Abfrage:

& TZ = Europa/Warschau

In meinem Fall die Ergebnisse sind folgende:

"val":"2015-08-31T22:00:00Z", 
"val":"2015-09-30T22:00:00Z", 
"val":"2015-10-31T23:00:00Z", 
"val":"2015-11-30T23:00:00Z", 

(I‘ ve geändert Start/Ende Parameter ein wenig zu zeigen, wie die Sommerzeit gespeichert wird). Außerdem wird das Suffix /MONTH in diesem Fall nicht benötigt, es hilft nur, die Startzeit korrekt zu halten.