1

我的文档中有一个嵌套对象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>= 期望 AND end<= 期望(总是只有一个对象可以满足这个条件,这在我的数据存储中得到保证),一旦我找到那个对象,我就会想回来(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'],那也无济于事

4

0 回答 0