Я написал некоторый запрос aggs, чтобы получить общее количество (сумма) и уникальный счет. , но результат немного смущен.отличное количество больше, чем doc_count в elasticsearch aggs
уникальное значение больше, чем doc_count.
Возможно ли это?
Я знаю, что агрегирование мощности является экспериментальным и может получить приблизительный подсчет различных значений.
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html
но слишком плохой результат. , как вы можете видеть, есть много ведер, которые уникальны больше, чем doc_count.
любая проблема с форматом запроса? или мощности?
полумиллиона документов индексируются
и есть 15 типа EventID
ES 1.4 использования.
запрос
{
"size": 0,
"_source": false,
"aggs": {
"eventIds": {
"terms": {
"field": "_EventID_",
"size": 0
},
"aggs": {
"unique": {
"cardinality": {
"field": "UUID"
}
}
}
}
}
ответ
{
"took": 383,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 550971,
"max_score": 0,
"hits": [
]
},
"aggregations": {
"eventIds": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "red",
"doc_count": 165110,
"unique": {
"value": 27423
}
},
{
"key": "blue",
"doc_count": 108376,
"unique": {
"value": 94775
}
},
{
"key": "yellow",
"doc_count": 78919,
"unique": {
"value": 70094
}
},
{
"key": "green",
"doc_count": 60580,
"unique": {
"value": 78945
}
},
{
"key": "black",
"doc_count": 49923,
"unique": {
"value": 56200
}
},
{
"key": "white",
"doc_count": 38744,
"unique": {
"value": 45229
}
},
EDIT. more test
Я попробовал еще раз с 1000 точностью_порога, который отфильтровывается только один eventId
, но ошибка результата такая же. мощность ожидается менее 30000, но его более чем 66000 (это больше, чем общий размер документа)
doc_count: (. Не проблема справа) 65672 мощность: 66037 (больше doc_count) фактической мощности: около 23 000 (в пересчете на РСУБД скрипты ...)
запрос
{
"size": 0,
"_source": false,
"query": {
"term": {
"_EventID_": "packdownload"
}
},
"aggs": {
"unique": {
"cardinality": {
"field": "UUID",
"precision_threshold": 10000
}
}
}
}
ответ
{
"took": 28,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 65672,
"max_score": 0,
"hits": []
},
"aggregations": {
"unique": {
"value": 66037
}
}
}
Попробуйте с '" precision_threshold ": 1000' и посмотрите, какие результаты вы вернетесь. Если вы посмотрите на графику, показывающую относительную ошибку в ссылке, которую вы указали, вы видите довольно большую ошибку для низкого порога. –
@ Аndrei Я понятия не имею, что такое «графический показ», о котором вы говорили. :( –
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/search-aggregations-metrics-cardinality-aggregation.html#_counts_are_approximate там есть граф. Вы пробовали с точностью 1000? –