У меня есть отображение одного поля в ES2.3 следующим образом
"move_in_ts": {
"type": "integer"
}
"move_out_ts": {
"type": "integer"
}
Sample document stores data as follows:
"move_in_ts": [
1475280000,
1475539200,
1475712000,
1475884800,
1477008000,
1477785600
]
У меня есть скрипт в моем запросе DSL (пытается найти целое число в этом массиве)
"script": "if(doc['move_in_ts'] && doc['move_in_ts'].values.contains('1475280000')){return 200;}"
а также пробовал это:
"script": "if(doc['move_in_ts'] && doc['move_in_ts'].contains('1475280000')){return 200;}"
а также пробовал это:
"script": "if(doc['move_in_ts'] && doc['move_in_ts'].contains(1475280000)){return 200;}"
а также пробовал это:
"script": "if(doc['move_in_ts'] && doc['move_in_ts'].values.contains(1475280000)){return 200;}"
но во всех вышеперечисленных случаях я получаю следующую ошибку:
"reason": {
"type": "null_pointer_exception",
"reason": null
}
Возможно, это поле вообще не существует в нескольких документах (я не могу использовать фильтр в моем случае использования, мне нужно, чтобы он был только в сценарии)
Что я делаю неправильно или как заставить его работать?
"functions": [{ "script_score": { "script": "if (doc['move_in_ts'] && doc['move_out_ts']) {return per_day_boost * ( [ doc['move_in_ts'], doc['move_out_ts'] ].transpose().find { av_start, av_out -> av_start <= desired_in_ts && av_out >= desired_out_ts }[0] - desired_in_ts).abs()/86400}; return 0;", "params": { "per_day_boost": -175, "desired_in_ts": 1478131200, "desired_out_ts": 1494547200 } } }]
- person JVK   schedule 02.11.2016"reason": "failed to run inline script [if (doc['move_in_ts'] && doc['move_out_ts']) {return per_day_boost * ( [ doc['move_in_ts'], doc['move_out_ts'] ].transpose().find { av_start, av_out -> av_start <= desired_in_ts && av_out >= desired_out_ts }[0] - desired_in_ts).abs()/86400}; return 0;] using lang [groovy]", "caused_by": { "type": "null_pointer_exception", "reason": "Cannot invoke method getAt() on null object" }
Я упростил свой вопрос в stackoverflow, чтобы получить работу первого уровня - person JVK   schedule 02.11.2016