sli*_*015 5 elasticsearch elasticsearch-dsl elasticsearch-painless
无痛脚本映射参数中存在如何检查密钥。在下面的查询中,查询检查a.toString()键存在于参数中,我已经尝试了所有方法,但没有使它起作用。请帮我
映射:
"id": {
"type": "long"
}
Run Code Online (Sandbox Code Playgroud)
查询:
{
"query":{
"bool":{
"filter":[
{
"script": {
"script": {
"lang": "painless",
"params": {
"29232":2541,
"minDistance": 0
},
"source": "def a=doc['id'].getValue();double distance=params[a.toString()]; return distance <= 1000 && distance >= params['minDistance']"
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
这params只是一个 JavaMap对象。因此,以下检查 中是否key存在,如果不存在则params提前退出false。
GET test/_search
{
"query":{
"bool":{
"filter":[
{
"script": {
"script": {
"lang": "painless",
"params": {
"29232":2541,
"minDistance": 0
},
"source": """
def a=doc['id'].getValue();
if (!params.containsKey(a.toString())) {
return false;
}
double distance=params[a.toString()];
return distance <= 1000 && distance >= params['minDistance']
"""
}
}
}
]
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
220 次 |
| 最近记录: |