2016-02-18 3 views
0

Я довольно новичок в Elasticsearch (с использованием версии 2.2). Чтобы упростить мой вопрос, у меня есть документы, у которых есть поле с именем завершение, которое иногда может принимать значение transfer.Elasticsearch: точность при агрегации фильтра

я в настоящее время сделать этот запрос агрегировать по месяцам количество документов, которые имеют, что завершение:

{ 
    "size": 0, 
    "sort": [{ 
    "@timestamp": { 
     "order": "desc", 
     "unmapped_type": "boolean" 
    } 
    }], 
    "query": { "match_all": {} }, 
    "aggs": { 
    "report": { 
     "date_histogram": { 
     "field": "@timestamp", 
     "interval": "month", 
     "min_doc_count": 0 
     }, 
     "aggs": { 
     "documents_with_termination_transfer": { 
      "filter": { 
      "term": { 
       "termination": "transfer" 
      } 
      } 
     } 
     } 
    } 
    } 
} 

Вот ответ:

{ 
    "_shards": { 
     "failed": 0, 
     "successful": 206, 
     "total": 206 
    }, 
    "aggregations": { 
     "report": { 
      "buckets": [ 
       { 
        "calls_with_termination_transfer": { 
         "doc_count": 209163 
        }, 
        "doc_count": 278100, 
        "key": 1451606400000, 
        "key_as_string": "2016-01-01T00:00:00.000Z" 
       }, 
       { 
        "calls_with_termination_transfer": { 
         "doc_count": 107244 
        }, 
        "doc_count": 136597, 
        "key": 1454284800000, 
        "key_as_string": "2016-02-01T00:00:00.000Z" 
       } 
      ] 
     } 
    }, 
    "hits": { 
     "hits": [], 
     "max_score": 0.0, 
     "total": 414699 
    }, 
    "timed_out": false, 
    "took": 90 
} 

Почему число обращений (414699) больше, чем общее количество документов (278100 + 136597 = 414697)? Я прочитал о проблемах точности, но, похоже, это не применимо в случае фильтров ... Есть ли проблема с погрешностью, если я суммирую общее количество документов с перевод прекращение?

ответ

0

Я предполагаю, что в некоторых документах отсутствует @timestamp.

Это поле можно проверить, запустив exists query.

+0

Вы правы! Было два совершенно разных документа, которые, по-видимому, использовались кибаной: ** «хиты»: [{"_id": "4.4.1", "_index": ".kibana", ...}, {"_id": " logstash- * "," _index ":" .kibana ", ...}] ** – Raphael