2016-10-18 2 views
0

Die Anzahl der PARTY_ID in der Aggregation sollte gleich sein. In einem Fall ist es 3000 und der andere Fall ist die Summe aller Werte (2675 + 244 + 41 + 6 + 2 = 2950), die nicht gleich sind. Was könnte der Grund sein?Elasticsearch Kardinalitätsaggregation mit falschen Ergebnissen

GET /test/data/_search 
{ 
    "size": 0, 
    "aggs": { 
     "ASSET_CLASS": { 
     "terms": { 
      "field": "ASSET_CLASS_WORST" 
     }, 
     "aggs": { 
      "ASSET_CLASS": { 
       "cardinality": { 
        "field": "PARTY_ID" 
       } 
      } 
     } 
     }, 
     "Total count": { 
     "cardinality": { 
      "field": "PARTY_ID" 
     } 
     } 
    } 
} 

Ergebnis:

{ 
    "took": 9, 
    "timed_out": false, 
    "_shards": { 
     "total": 5, 
     "successful": 5, 
     "failed": 0 
    }, 
    "hits": { 
     "total": 51891, 
     "max_score": 0, 
     "hits": [] 
    }, 
    "aggregations": { 
     "Total count": { 
     "value": 3000 
     }, 
     "ASSET_CLASS": { 
     "doc_count_error_upper_bound": 0, 
     "sum_other_doc_count": 0, 
     "buckets": [ 
      { 
       "key": "NPA", 
       "doc_count": 49252, 
       "ASSET_CLASS": { 
        "value": 2675 
       } 
      }, 
      { 
       "key": "RESTRUCTURED", 
       "doc_count": 2275, 
       "ASSET_CLASS": { 
        "value": 244 
       } 
      }, 
      { 
       "key": "SMA2", 
       "doc_count": 308, 
       "ASSET_CLASS": { 
        "value": 41 
       } 
      }, 
      { 
       "key": "SMA1", 
       "doc_count": 42, 
       "ASSET_CLASS": { 
        "value": 6 
       } 
      }, 
      { 
       "key": "SMA0", 
       "doc_count": 14, 
       "ASSET_CLASS": { 
        "value": 2 
       } 
      } 
     ] 
     } 
    } 
} 

Antwort

1

Die erste Zeile des documentation for cardinality aggregation lautet:

A einwertig Metriken, die eine Aggregation approximate Zählung der unterschiedlichen Werte berechnet.

(emphasis Mine)

Ein Fehler von 10 von 3000 liegt weit unter 1%, so ist es nur zu erwarten.

Die Kardinalitätsaggregation verwendet eine enhanced Version von HyperLogLog Kalkül, die interessante Funktionen wie konstante Speicherkomplexität und O (N) Zeit Komplexität hat. Wenn Sie genauere Ergebnisse benötigen, versuchen Sie es mit einer höheren Einstellung für den Parameter precision_threshold.

GET /test/data/_search 
{ 
    "size": 0, 
    "aggs": { 
     "ASSET_CLASS": { 
     "terms": { 
      "field": "ASSET_CLASS_WORST" 
     }, 
     "aggs": { 
      "ASSET_CLASS": { 
       "cardinality": { 
        "field": "PARTY_ID", 
        "precision_threshold": 10000 
       } 
      } 
     } 
     }, 
     "Total count": { 
     "cardinality": { 
      "field": "PARTY_ID", 
      "precision_threshold": 10000 
     } 
     } 
    } 
} 
+0

danke @Shadocko. Haben Sie Leistungsstatistiken in Bezug auf diese – Bond

+0

@James Nope, müssten Sie Benchmarks für Ihr spezielles Setup ausführen. – Shadocko

Verwandte Themen