8.15.0 插件版本 case when 中存在多个字段相加,解析错误。

Author: FJGeGeCreated Jan 6, 2026Updated Jan 6, 2026

e.g. SELECT case when NormalChargePower is null and AdjustChargePower is null then 0.000 when NormalChargePower is null and AdjustChargePower is not null then 1.000 when AdjustChargePower is null and NormalChargePower is not null then 2.000 else (FreeChargePower + NormalChargePower + AdjustChargePower) end as ChargePower from xxxx limit 10

explain: { "from": 0, "size": 10, "query": { "bool": { "filter": [{ "bool": { "must": [{ "bool": { "must": [{ "match_phrase": { "BillType": { "query": "1" } } }, { "range": { "BillDate": { "gte": "2026-01-01 00:00:00.000+0800", "boost": 1.0 } } }, { "range": { "BillDate": { "lte": "2026-01-02 23:59:59.999+0800", "boost": 1.0 } } }], "boost": 1.0 } }], "boost": 1.0 } }], "boost": 1.0 } }, "_source": { "includes": [], "excludes": [] }, "script_fields": { "ChargePower": { "script": { "source": "if((doc['NormalChargePower'].empty) && (doc['AdjustChargePower'].empty)){0.000} else if((doc['NormalChargePower'].empty) && (doc['AdjustChargePower'].empty)){1.000} else if((doc['AdjustChargePower'].empty) && (doc['NormalChargePower'].empty)){2.000} else {doc['FreeChargePower + NormalChargePower'].value+doc['AdjustChargePower'].value}", "lang": "painless" }, "ignore_failure": false } } }

Source: NLPchina/elasticsearch-sql