首页 > 解决方案 > 如何将参数放入query.script.script.params?

问题描述

我有一个这样的查询:

{
 "script": {
     "script": {
     "lang": "painless",
     "params": {
         "maxPrice": 1000000,
         "minPrice": 50,
         "now": "{{now}}"
                },
     "source": "(doc['selling_price'].value == 0 && doc['normal_price'].value >= params.minPrice && doc['normal_price'].value <= params.maxPrice) || (doc['selling_price'].value > 0 && doc['selling_price'].value >= params.minPrice && doc['selling_price'].value <= params.maxPrice && params.now <= doc['selling_price_end_time'].value.getMillis() && params.now >= doc['selling_price_start_time'].value.getMillis())"
                 }
            }
}

当我尝试像这样在模板中放入参数minPrice时:maxPricenow

"params": {
     "maxPrice": "{{maxPrice}}",
     "minPrice": "{{minPrice}}",
     "now": "{{now}}"
          },

然后当我运行时:

{
    "id": "my_template",
    "params": {
        "query_all": "My goi",
        "maxPrice": 100000000,
        "minPrice": 50,
        "now": 1421427600000,

我收到了这个:

"failures": [
    {
        "shard": 4,
        "index": "dev_index_sku_list",
        "node": "jSpDqKHwSMeWsUxxoD9-5w",
        "reason": {
            "type": "script_exception",
            "reason": "runtime error",
            "script_stack": [
                "(doc['selling_price'].value == 0 && doc['normal_price'].value >= params.minPrice && doc['normal_price'].value <= params.maxPrice) || (doc['selling_price'].value > 0 && doc['selling_price'].value >= params.minPrice && doc['selling_price'].value <= params.maxPrice && 

可笑的是,当我设置now为参数时,它可以工作,但不适用于minPriceand的情况maxPrice


背后的逻辑source是:

我们的数据有:

NormalPrice: 200                          #this is the normal price
SellingPrice:  100                        #this is actually the promotion price
selling_price_start_time:  "2020-01-01"   #duration of promotion price
selling_price_end_time:    "2020-01-30"

逻辑:

if selling_price!= 0 and nowin the Promotion time then filter within minPriceand maxPrice else then filter by normalPricewithin minPriceandmaxPrice


目前正在开发第 7 版的 elasticSearch

标签: elasticsearch

解决方案


推荐阅读