我的文档中有一个嵌套对象mygroup
,如下所示:
{
"name": "john",
"mygroup": [
{
"start": 200,
"end": 490
},
{
"start": 800,
"end": 900
},
{
"start": 22,
"end": 49
}
]
}
我的script_score
中的function_score
之一如下:
"script_score": {
"params": {
"gboost": -1350,
"desired": 30,
"delta": 10
},
"script": "_source['mygroup'].values.any{ if(it -> it.end >= desired && it.start <= desired) { return (it.end - delta) * 2} };"
}
我的目标是找到一个符合我的条件的对象,其中start
是&gt; =期望AND end
&lt; =期望(只有一个对象足以满足这个条件, #39;在我的数据存储中得到保证),一旦找到该对象,我想返回(it.end - delta) * 2
进行分数计算
我的上述脚本"_source['mygroup'].values.any{ if(it -> it.end >= desired && it.start <= desired) { return (it.end - delta) * 2} };"
无法正常工作,并且不断出现错误。我正在使用ES 2.3和groovy来编写脚本语言。
如果我在doc['mygroup']
的地方使用_source['mygroup']
,那也没有帮助