在elasticsearch脚本中键入转换

时间:2013-06-26 22:27:30

标签: scripting elasticsearch mvel

我想使用脚本执行以下操作:

{
  "query": {
  "match_all": {}
},
  "facets": {
    "user_facet": {
      "terms": {
        "field": "user_id",
        "script": "term + \"_\" + _source.code"
      }
    }
  }
}

这与此问题中给出的答案类似: elastic search double facet

我唯一的问题是我的user_id和代码字段是长类型,而不是字符串。有没有办法让它们成为字符串,以便它们可以与脚本结合使用?

我得到的具体错误是:

nested: ClassCastException[java.lang.String cannot be cast to java.lang.Number];

1 个答案:

答案 0 :(得分:3)

这可能听起来很荒谬,但我遇到了同样的问题,我修复它的方式(对于一个非常类似的问题)是放弃“字段”规范,使它看起来像这样:

{
  "query": {
  "match_all": {}
},
  "facets": {
    "user_facet": {
      "terms": {
        "script": "term + \"_\" + _source.code"
      }
    }
  }
}

我认为它试图将“脚本”执行的输出转换回字段类型,导致类转换异常。