你可以做這樣的(你需要Elasticsearch 2.X):
{
"size": 0,
"aggs": {
"myField": {
"terms": {
"field": "myField"
},
"aggs": {
"count_indices": {
"cardinality": {
"field": "_index"
}
},
"values_bucket_filter_by_index_count": {
"bucket_selector": {
"buckets_path": {
"count": "count_indices"
},
"script": "count >= 2"
}
}
}
}
}
}
隨着"terms": {"field": "myField"}
你得到的唯一myField
值。然後,作爲子彙總,使用"cardinality": {"field": "_index"}
您可以計算具有該值的最終彙總索引的數量 - values_bucket_filter_by_index_count
- 您將保留至少包含兩個索引的那些存儲桶。
到底聚集造成這個樣子:
"aggregations": {
"myField": {
"doc_count_error_upper_bound": 0,
"sum_other_doc_count": 0,
"buckets": [
{
"key": "value1",
"doc_count": 2,
"count_indices": {
"value": 2
}
},
{
"key": "value2",
"doc_count": 2,
"count_indices": {
"value": 2
}
}
]
}
}
正如我所說,你需要Elasticsearch x爲bucket_selector
聚集。
要小心,默認聚合只會得到10個結果,您需要更改大小以獲取所有不同的MyField。 –
這些值是哪一種類型唯一? – Richa
無論如何,我認爲你不能直接與ES –