我有一个应用程序将编号的日志序列插入到elasticsearch中。 在某些情况下,在停止我的应用程序后,我发现在弹性搜索中,日志比我实际生成的日志多。 这个简单的聚合帮助我发现存在一些重复:
curl /logstash-*/_search?pretty -d '{
size: 0,
aggs: {
msgnum_terms: {
terms: {
field: "msgnum.raw",
min_doc_count: 2,
size: 0
}
}
}
}'
msgnum
是包含数字序列的字段。通常它应该是唯一的,结果doc_count
s永远不会超过1.相反,我会得到类似的东西:
{
"took" : 33,
"timed_out" : false,
"_shards" : {
"total" : 5,
"successful" : 5,
"failed" : 0
},
"hits" : {
"total" : 100683,
"max_score" : 0.0,
"hits" : [ ]
},
"aggregations" : {
"msgnum_terms" : {
"doc_count_error_upper_bound" : 0,
"sum_other_doc_count" : 0,
"buckets" : [ {
"key" : "4097",
"doc_count" : 2
}, {
"key" : "4099",
"doc_count" : 2
...
...
...
}, {
"key" : "5704",
"doc_count" : 2
} ]
}
}
}
如何计算重复的确切数量,以确保它们是弹性搜索中生成的日志行数与点击次数不匹配的唯一原因?