老实说,我不知道是谁命名的painless
,因为它确实不是,而且文档肯定不准确。
首先,我尝试与日期进行比较的字段被映射为date
。
脚本本身看起来像这样:
Date max = new Date(params.updated_at);
for (...) {
if (ctx._source.arr[i]['updated_at'].after(max)) {
max = ctx._source.arr[i]['updated_at'];
}
}
ctx._source.updated_at = max;
我得到的错误是:"caused_by":{"type":"illegal_argument_exception","reason":"Unable to find dynamic method [after] with [1] arguments for class [java.lang.String]."
。
现在我的问题是:为什么地球上映射为date
的字段会是string
?
阅读API(https://www.elastic.co/guide/en/elasticsearch/painless/master/painless-api-reference.html)清楚地说明Date
采用after
方法。
所以...我在这里做了一些完全错误的事情,或者说是什么情况?此外,如果它是如何...我真的必须每次解析字符串回到日期?如果是这样的话?