Elasticsearch groovy脚本迭代通过嵌套对象进行评分抛出错误

时间:2016-10-25 16:15:53

标签: groovy elasticsearch-2.0 elasticsearch-dsl

我的文档中有一个嵌套对象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'],那也没有帮助

0 个答案:

没有答案