Elasticsearch,获取平均文档长度
Elasticsearch, get average document length
在 elasticsearch 中有没有更好的方法(除了发出匹配所有查询并手动计算所有返回文档的长度的平均值)来获取特定索引的平均文档长度?
在黑暗中拍摄,但结合脚本的分面或聚合可能会做到。
{
...,
"aggs" : {
"avg_length" : { "avg" : { "script" : "doc['_all'].length" } }
}
}
_size mapping field,如果启用,应该免费给你每个文档的大小。将它与 avg
聚合结合起来应该可以得到你想要的。类似于:
{
"query" : {"match_all" : {}},
"aggs" : {"avg_size" : {"avg" : {"terms" : {"field" : "_size"}}}}
}
我使用过这段代码(我启用了_source)
{
"query" : {"match_all" : {}},
"aggs":{
"avg_length" : { "avg" : { "script" : "_source.toString().length()"}}
}
}
好吧,字符 .. 如果字符串是 UTF-8 以获取字节:
{
"query" : {"match_all" : {}},
"aggs":{
"avg_length" : { "avg" : { "script" : "_source.toString().getBytes(\"UTF-8\").length"}}
}
}
在 ElasticSearch 6.2 中,您应该只使用以下行(无需添加 'terms'):
"aggs" :
{"avg_size" :
{"avg" :
{"field" : "_size"}}}
在 elasticsearch 中有没有更好的方法(除了发出匹配所有查询并手动计算所有返回文档的长度的平均值)来获取特定索引的平均文档长度?
在黑暗中拍摄,但结合脚本的分面或聚合可能会做到。
{
...,
"aggs" : {
"avg_length" : { "avg" : { "script" : "doc['_all'].length" } }
}
}
_size mapping field,如果启用,应该免费给你每个文档的大小。将它与 avg
聚合结合起来应该可以得到你想要的。类似于:
{
"query" : {"match_all" : {}},
"aggs" : {"avg_size" : {"avg" : {"terms" : {"field" : "_size"}}}}
}
我使用过这段代码(我启用了_source)
{
"query" : {"match_all" : {}},
"aggs":{
"avg_length" : { "avg" : { "script" : "_source.toString().length()"}}
}
}
好吧,字符 .. 如果字符串是 UTF-8 以获取字节:
{
"query" : {"match_all" : {}},
"aggs":{
"avg_length" : { "avg" : { "script" : "_source.toString().getBytes(\"UTF-8\").length"}}
}
}
在 ElasticSearch 6.2 中,您应该只使用以下行(无需添加 'terms'):
"aggs" :
{"avg_size" :
{"avg" :
{"field" : "_size"}}}