Elasticsearch无痛查询异常

时间:2018-06-12 19:20:23

标签: elasticsearch elasticsearch-query elasticsearch-6 elasticsearch-painless

我正在使用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并且我的脚本停止工作。知道如何解决这个问题吗?

0 个答案:

没有答案