愚者求师之过,智者从师之长。

painless 怎么 parse json to map

Elasticsearch | 作者 liuyeye | 发布于2019年09月26日 | 阅读数:4305

painless 语言怎么在inline中将 json parse 成map?
已邀请:

liuyeye

赞同来自:


"script_score": {
"script": {
"source": "Map map = params.a; return map['a'];",
"lang": "painless",
"params":{"a":"{{a}}"},
}
}

[quote]
 


传入params.a为map类型:
"reason": "class_cast_exception: java.lang.String cannot be cast to java.util.Map",
[/quote]

doom

赞同来自:

问题有点怪怪的,一般脚本的params,基本就是k-v的json数据,一般都可以满足要求;然后source里面取值,一般需要提前指定 字段;
如果是 查询模板,更加灵活;变量直接{{}},;外部直接给字段和参数;具体你的问题,不知道能否解决;还望详细描述目的;为啥需要返回Map。

doom

赞同来自:

参照这个网站:https://www.elastic.co/guide/e ... .html
 
 
Converting parameters to JSONedit
The 
{{#toJson}}parameter{{/toJson}}
 function can be used to convert parameters like maps and array to their JSON representation:
GET _search/template
{
"source": "{ \"query\": { \"terms\": {{#toJson}}statuses{{/toJson}} }}",
"params": {
"statuses" : {
"status": [ "pending", "published" ]
}
}
}
 
{ "query": { "terms": { "status": [ "pending", "published" ] } } }

要回复问题请先登录注册