我想在字段上使用stats或extended_stats聚合,_score但找不到任何这样做的例子(即,似乎你只能使用与实际文档字段的聚合).
是否有可能请求对计算出的"元数据"字段聚合用于在ElasticSearch查询响应每个命中(例如,_score,_type,_shard,等等)?
我假设答案是'不',因为像_score没有索引的字段......
小智 12
注意:根据最新版本的Elasticsearch,原始答案现已过时.使用Groovy脚本的等效脚本将是:
{
...,
"aggregations" : {
"grades_stats" : {
"stats" : {
"script" : "_score"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
为了实现这一目标,您需要启用动态脚本,或者甚至更好地存储基于文件的脚本并按名称执行(为了通过不启用动态脚本来增加安全性)!
您可以使用脚本并使用doc.score引用分数.ElasticSearch的脚本文档中提供了更多详细信息.
样本统计聚合可以是:
{
...,
"aggregations" : {
"grades_stats" : {
"stats" : {
"script" : "doc.score"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下:
"aggregations": {
"grades_stats": {
"count": 165,
"min": 0.46667441725730896,
"max": 3.1525731086730957,
"avg": 0.8296855776598959,
"sum": 136.89812031388283
}
}
Run Code Online (Sandbox Code Playgroud)
甲直方图也可以是有用的聚合:
"aggs": {
"grades_histogram": {
"histogram": {
"script": "doc.score * 10",
"interval": 3
}
}
}
Run Code Online (Sandbox Code Playgroud)
直方图结果:
"aggregations": {
"grades_histogram": {
"buckets": [
{
"key": 3,
"doc_count": 15
},
{
"key": 6,
"doc_count": 103
},
{
"key": 9,
"doc_count": 46
},
{
"key": 30,
"doc_count": 1
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
doc.score似乎不再起作用了.使用_score似乎完美无缺.
例:
{
...,
"aggregations" : {
"grades_stats" : {
"stats" : {
"script" : "_score"
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6280 次 |
| 最近记录: |