我正在使用Elasticsearch 6.2,它对内联脚本使用无痛。我的doc中的一个字段有映射:
"gap_days": {"type": "integer"}
我有一个无痛的搜索脚本,其中几行是:
int gap = 10; //initialize to a default value
if (doc.containsKey('gap_days')) {
if (doc['gap_days'].value != null) {
gap = doc['gap_days'].value;
}
}
但这会引发错误:
script_stack: [
"gap = doc['gap_days'].value; } } ",
" ^---- HERE"
],
caused_by: {
reason: "cannot convert MethodHandle(Longs)long to (Object)int",
type: "wrong_method_type_exception"
},
reason: "runtime error"
我试图查看索引中的所有唯一doc['gap_days']
值,您可以看到所有文档中的所有值都是整数
"aggregations": {
"uniq_gaps": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 342,
"buckets": [
{
"key": 0,
"doc_count": 31607
},
{
"key": 365,
"doc_count": 15119
},
{
"key": 5,
"doc_count": 2639
},
{
"key": 21,
"doc_count": 1784
},
{
"key": 14,
"doc_count": 1229
},
{
"key": 3,
"doc_count": 1073
},
{
"key": 7,
"doc_count": 979
},
{
"key": 2,
"doc_count": 728
},
{
"key": 4,
"doc_count": 291
},
{
"key": 10,
"doc_count": 170
}
]
}
}
那为什么会抛出一个异常说cannot convert MethodHandle(Longs)long to (Object)int
并且我的脚本停止工作。知道如何解决这个问题吗?