行动是治愈恐惧的良药,而犹豫、拖延将不断滋养恐惧。

es7.13.1 插入文档 记录 最早时间 和 最晚时间。

匿名 | 发布于2021年09月14日 | 阅读数:126

插入文档。使用文档中的时间和库中的时间作比较,记录两个时间中最早的时间。麻烦各位应该怎么修改
插入语句:存储类型为 
"firstTime": {
"format": "yyyy-MM-dd HH:mm:ss",
"type": "date"

},
POST test/_update/test
{
"script":{
"lang": "painless",
"source": "if(!ctx._source.containsKey('firstTime')){ctx._source.firstTime=[params.firstTime]} else {if (ctx._source.firstTime.value.millis > params.firstTime.value.millis){ctx._source.firstTime=[params.firstTime]}}",
"params": {
"firstTime":"2021-08-23 08:32:00",
"lastTime":"2021-08-28 08:32:01"
}
}
}
报错:
{
"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "failed to execute script"
}
],
"type" : "illegal_argument_exception",
"reason" : "failed to execute script",
"caused_by" : {
"type" : "script_exception",
"reason" : "runtime error",
"script_stack" : [
"if (ctx._source.firstTime.value.millis > params.firstTime.value.millis){",
" ^---- HERE"
],
"script" : "if(!ctx._source.containsKey('firstTime')){ctx._source.firstTime=[params.firstTime]} else {if (ctx._source.firstTime.value.millis > params.firstTime.value.millis){ctx._source.firstTime=[params.firstTime]}}",
"lang" : "painless",
"position" : {
"offset" : 115,
"start" : 90,
"end" : 162
},
"caused_by" : {
"type" : "illegal_argument_exception",
"reason" : "dynamic getter [java.lang.String, value] not found"
}
}
},
"status" : 400
}

 
已邀请:

Charele

赞同来自:

似乎它首先把这个字段当成了string类型,所以会报那个错,对这个不熟,没找到解决办法
 
我感觉只要“格式正确”,这里是可以直接用大小来判断的,
ctx._source.firstTime.compareTo(params.firstTime) > 0
 
另外,赋值的时候,
用 ctx._source.firstTime=[params.firstTime],会生成额外的"[]"
用 ctx._source.firstTime=params.firstTime就可以了。

要回复问题请先登录注册