Elasticsearch无痛脚本的奇怪行为

时间:2018-09-20 09:53:15

标签: elasticsearch elasticsearch-painless

我有以下脚本查询,可以正常运行。

  {
    "query": {
      "bool": {
        "must": [
            {"range": { "a": { "gte": 0 }} },
            {"range": { "b": {"gte": 0}} },
          {
            "script": {
              "script": {
                "source": "doc['a'].value <= doc['b'].value * (1 - params.percent)",
                "lang": "painless",
                "params": { "percent": 0.80 }
              }
            }
          }
        ]
      }
    }
  }

但是以下具有相同逻辑但将division by 100逻辑移至source字段的脚本查询给出了不同的结果。结果不会随着params.percent值的改变而改变

  {
    "query": {
      "bool": {
        "must": [
            {"range": { "a": { "gte": 0 }} },
            {"range": { "b": {"gte": 0}} },
          {
            "script": {
              "script": {
                "source": "doc['a'].value <= doc['b'].value * (1 - params.percent/100)",
                "lang": "painless",
                "params": { "percent": 80 }
              }
            }
          }
        ]
      }
    }
  } 

0 个答案:

没有答案