gpt4 book ai didi

groovy - Elasticsearch : How to write multi statement scripts?

转载 作者:行者123 更新时间:2023-11-29 02:47:49 24 4
gpt4 key购买 nike

我将值存储在 Elasticsearch 索引中的文档中。
我需要对值进行一些日期操作并返回一个 bool 值以在过滤器中使用。
该脚本包含多行,我无法运行它。

我写过其他运行良好的单一脚本,但我对 Groovy 几乎一无所知,对 Elastic 搜索知之甚少。

我能用脚本找到的每个示例都有一行,而且只有一行。

那么基本上我将如何使用这个完全有效的脚本

"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。

关于groovy - Elasticsearch : How to write multi statement scripts?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33480190/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com