8.15.0 插件版本 case when 中存在多个字段相加,解析错误。
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