2015-03-16 5 views
0

У меня есть документ для поиска текстов, как показано ниже.Elasticsearch Сценарии с датой

{ 
    "ProductID": 123, 
    "SellingPrice": 1200.00, 
    "DiscountAmount":0.00, 
    "Discount": { 
    "Type": "percentage", 
    "Amount": 25, 
    "StartDate": "2014-08-13T12:05:00", 
    "EndDate": "2014-12-31T12:10:00" 
    } 
} 

Всякий раз, когда я получить этот документ, скрипт должен автоматически проверять Endate с текущей системной датой, если скидка не истекла, это поле «DiscountAmount» должен меняться в зависимости от процента скидки в результате. Пожалуйста помоги мне с этим.

ответ

1

Вы не можете изменить фактические поля в своем документе, но вы можете добавить поля к вашему результату с помощью script fields. Что-то вроде этого (untested) должно заставить вас начать.

"script_fields" : {   
    "actual_cost" : { 
     "script" : "if (doc['Discount.EndDate'].value > System.currentTimeMillis()) {return doc['SellingPrice'].value * doc['Discount.Amount]/100;}; return doc['SellingPrice'].value;" 
    } 
} 
+0

Мне нужно изменить значение в результирующем документе при запросе .. не в реальном поле. – Bala

+0

Выше * добавляет * новое поле к результату, когда вы используете его в поисковом запросе. Ничего не изменилось (не может быть). Я на 99% уверен, что это делает то, что вы хотите. –

Смежные вопросы