我见过的每个例子(例如,ElasticSearch:_score字段上的聚合?)用于在_score字段上进行聚合或与之相关的聚合似乎需要使用脚本.出于安全原因,默认情况下ElasticSearch会禁用动态脚本,有没有办法在不借助将脚本文件加载到每个ES节点或重新启用动态脚本的情况下实现此目的?
我的原始聚合如下所示:
"aggs": {
"terms_agg": {
"terms": {
"field": "field1",
"order": {"max_score": "desc"}
},
"aggs": {
"max_score": {
"max": {"script": "_score"}
},
"top_terms": {
"top_hits": {"size": 1}
}
}
}
Run Code Online (Sandbox Code Playgroud)
尝试将表达式指定为lang似乎不起作用,因为ES会抛出一个错误,指出只有在用于排序时才能访问该分数.我无法通过得分字段找出任何其他方法来订购我的桶.有人有主意吗?
编辑:为了澄清,我的限制是无法修改服务器端.即,作为ES安装或配置的一部分,我无法添加或编辑任何内容.