从es7.0开始,如果doc['field'].value 中的field不存在,将抛出异常。
是否抛出异常可以通过jvm参数来设置,true:是,false:否。
-Des.scripting.exception_for_missing_value=true 。
可以通过doc['field'].size() == 0 来判断是都存在field。
例如:
GET product2/_search
{
"query": {
"bool": {
"must": [
{
"script": {
"script": {
"lang": "painless",
"source": "doc['price'].size()>0"
}
}
}
]
}
},
"script_fields": {
"discount_price": {
"script": {
"lang": "painless",
"source": "doc['price'].value * params.discount",
"params": {
"discount": 0.8
}
}
}
}
}