Elasticsearch Groovy сценарий для перебора вложенного объекта для оценки ошибок бросков

У меня есть вложенный объект 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 это>= желаемое И 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'], это тоже не помогает

0 ответов

Другие вопросы по тегам