如何检查弹性搜索无痛参数中是否存在密钥?
how to check for key exist in elastic-search painless parameters?
如何检查无痛脚本映射参数中是否存在密钥。
在下面的查询中,检查参数中是否存在 a.toString()
键
我已经尝试了一切,但没有成功。
请帮助我
映射:
"id": {
"type": "long"
}
查询:
{
"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']"
}
}
}
]
}
}
}
params
只是一个 Java Map
对象。因此,以下检查 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']
"""
}
}
}
]
}
}
}
如何检查无痛脚本映射参数中是否存在密钥。
在下面的查询中,检查参数中是否存在 a.toString()
键
我已经尝试了一切,但没有成功。
请帮助我
映射:
"id": {
"type": "long"
}
查询:
{
"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']"
}
}
}
]
}
}
}
params
只是一个 Java Map
对象。因此,以下检查 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']
"""
}
}
}
]
}
}
}