2016-03-19 11 views
1

Benutzer kann eine neue Entität mit dem Preis erstellen. Die Preise können in verschiedenen Währungen (EUR, USD ...) sein, so dass wir den realen Preis multiplizieren können (Preis * convert_rate).Elasticsearch dynamischer Filter von (Preis * Währungsumrechnungskurs)

Was ich versuche ist, die Datensätze nach Preis zu filtern, abhängig von der Währung und dem Betrag, die vom Frontend-Benutzer (EUR oder USD) ausgewählt wurden.

Problem ist, dass die Preise häufig ändern, so dass ich Rate in jedem Dokument nicht aktualisieren kann.

Gibt es eine Möglichkeit, nach Array (mit rate_id => convert_rate) zu filtern, oder convert_rate dynamisch nach currency_id in Query zu importieren? Etwas wie folgt aus:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "script": { 
      "script": "doc[\"price\"].value * convert_rate > 5" 
     } 
     } 
    } 
    } 
} 

Edited:

Jedes Produkt currency_id haben. Mit currency_id möchte ich convert_rate finden und dann mit dem Preis multiplizieren.

Währungskurse können entweder in einem anderen Dokument oder in einem Array sein.

dies vielleicht klären, was ich

"products" : { 
     "properties" : { 
      "id" : { 
       "type" : "integer" 
      }, 
     "currency_id" : { 
      "type" : "integer" 
     }, 
     "price" : { 
       "type" : "double" 
     } 
    } 
} 




{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "script": { 
      "script": "doc[\"price\"].value > convert_rate", 
      "params" : { 
       "convert_rate" : **get.convert_rate.where.currency_id == doc[\"currency_id\"].value** 
      } 
     } 
     } 
    } 
    } 
} 
+0

Wenn Sie eine Lösung für die gefunden Problem bitte @pusic teilen –

Antwort

Verwandte Themen