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']
, это тоже не помогает