elasticsearch:如何编写多语句脚本?
我在Elasticsearch索引中的文档中存储了值。
我需要对值进行一些日期操作,并返回要在过滤器中使用的布尔值。
该脚本涵盖了几行,但我无法运行它。
我编写了其他可以正常工作的脚本,但是我对Groovy的了解甚少,而对Elastic search的了解却很少。
我可以用脚本找到的每个样本只有一行,只有一行。
所以基本上我将如何采用这个完全有效的脚本
"script": { "script": "doc['state'].value == 'completed' && doc['lastStateUpdate'].value < doc['dueDate'].value"
}
并把它变成像
"script": { "script": "def isCompleted = doc['state'].value == 'completed'
def preSLA = doc['lastStateUpdate'].value < doc['dueDate'].value
return isCompleted && preSLA"
}
我对创建一个只写一个表示逻辑的线性的想法并不感到生气,我可以看到更多这样的逻辑,尽管这个相对简单,但是“一个线性”并没有用削减它。
这里的替代方法是在对文档建立索引之前对其进行一些预处理,然后向其中添加额外的数据。但是,这样做的缺点是它非常不灵活,我们需要重新索引所有数据以更改这些聚合,而我们不希望这样做。
回答:
您只需要用分号分隔每个语句:
"script": { "script": "isCompleted = doc['state'].value == 'completed'; preSLA = doc['lastStateUpdate'].value < doc['dueDate'].value; return isCompleted && preSLA;"
}
不过,请确保不要在脚本字符串中添加换行符,因为它不是有效的JSON。
以上是 elasticsearch:如何编写多语句脚本? 的全部内容, 来源链接: utcz.com/qa/412044.html