2014-07-09 13 views
7

Ich lerne elastische Suche und möchte verschiedene Werte zählen. Bisher kann ich Werte zählen, aber nicht eindeutig. HierZählen Sie verschiedene Werte mit elasticsearch

ist die Beispieldaten:

curl http://localhost:9200/store/item/ -XPOST -d '{ 
    "RestaurantId": 2, 
    "RestaurantName": "Restaurant Brian", 
    "DateTime": "2013-08-16T15:13:47.4833748+01:00" 
}' 

curl http://localhost:9200/store/item/ -XPOST -d '{ 
    "RestaurantId": 1, 
    "RestaurantName": "Restaurant Cecil", 
    "DateTime": "2013-08-16T15:13:47.4833748+01:00" 
}' 

curl http://localhost:9200/store/item/ -XPOST -d '{ 
    "RestaurantId": 1, 
    "RestaurantName": "Restaurant Cecil", 
    "DateTime": "2013-08-16T15:13:47.4833748+01:00" 
}' 

Und was habe ich versucht, so weit:

curl -XPOST "http://localhost:9200/store/item/_search" -d '{ 
    "size": 0, 
    "aggs": { 
    "item": { 
     "terms": { 
     "field": "RestaurantName" 
     } 
    } 
    } 
}' 

Ausgang:

{ 
    "took": 0, 
    "timed_out": false, 
    "_shards": { 
    "total": 5, 
    "successful": 5, 
    "failed": 0 
    }, 
    "hits": { 
    "total": 3, 
    "max_score": 0.0, 
    "hits": [] 
    }, 
    "aggregations": { 
    "item": { 
     "buckets": [ 
     { 
      "key": "restaurant", 
      "doc_count": 3 
     }, 
     { 
      "key": "cecil", 
      "doc_count": 2 
     }, 
     { 
      "key": "brian", 
      "doc_count": 1 
     } 
     ] 
    } 
    } 
} 

Wie kann ich Zahl von cecil als 1 erhalten statt von 2

Antwort

4
+0

Ich habe sogar versucht: curl -XPOST "http: // localhost: 9200/speichern/item/_search" -d '{"size": 0, "aggs": {"item": {"cardinality": { "field": "RestaurantName"}}}} aber keine eindeutige Anzahl erhalten – Developer

+0

Sollte Curl -XGET sein? – c24b

+0

und ist es in Ordnung, das Aggregat als Element umzubenennen? – c24b

3

Sie haben Mächtigkeit Option zu verwenden, wie von @coder erwähnt, die Sie im doc

curl -XGET "http://localhost:9200/store/item/_search" -d' 
{ 
"aggs" : { 
    "restaurant_count" : { 
     "cardinality" : { 
      "field" : "RestaurantName", 
      "precision_threshold": 100, 
      "rehash": false 
      } 
      } 
     } 
}' 

Dieser arbeitete für mich finden können ...

0

Es gibt keine Unterstützung für das getrennte Zählen in ElasticSearch, obwohl nichtdeterministisches Zählen existiert. Verwenden Sie "Begriffe" Aggregation und zählen Buckets im Ergebnis. Siehe Count distinct on elastic search Frage.

Verwandte Themen