0
を返します。Elasticsearchネストされた集計このマッピングでは、重複する結果
PUT pizzas
{
"mappings": {
"pizza": {
"properties": {
"name": {
"type": "keyword"
},
"types": {
"type": "nested",
"properties": {
"topping": {
"type": "keyword"
},
"base": {
"type": "keyword"
}
}
}
}
}
}
}
そして、このデータ:
PUT pizzas/pizza/1
{
"name": "meat",
"types": [
{
"topping": "bacon",
"base": "normal"
},
{
"topping": "pepperoni",
"base": "normal"
}
]
}
PUT pizzas/pizza/2
{
"name": "veg",
"types": [
{
"topping": "broccoli",
"base": "normal"
}
]
}
私は、このネストされた集計クエリを実行した場合:
GET pizzas/_search
{
"size": 0,
"aggs": {
"types_agg": {
"nested": {
"path": "types"
},
"aggs": {
"base_agg": {
"terms": {
"field": "types.base"
}
}
}
}
}
}
を、私はこの結果を得ます:
{
"took": 2,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 2,
"max_score": 0,
"hits": []
},
"aggregations": {
"types_agg": {
"doc_count": 3,
"base_agg": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "normal",
"doc_count": 3
}
]
}
}
}
}
私は私のクエリに一致する唯一の二つの文書があるので、私の凝集が2のdoc_count
を返すことが期待されます。しかし、転置インデックスだから、それは3件の結果を見つけるため、3つのドキュメントされていることは明らかです。
一意の文書数を返すためにとにかくありますか?
(Elasticsearch 5.4.3でテスト)
このように私はこれを理解しています。あなたのネストされたならば、ネストされた集計では、これは、ネストされたタイプのコンテキストで結果を返します。それがアグリゲーターをそこから減らすのと同じように。 reverse_nestedをプッシュしてルートなどに戻ってきます。 https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-reverse-nested-aggregation.htmlを使用してください。 – user3775217