2017-09-15 92 views
0

我有一些數據:彈性搜索分組唯一值

[{ 
    "article_id": 257710962, 
    "category_id": "category1" 
}, 
{ 
    "article_id": 257710962, 
    "category_id": "category2" 
}, 
{ 
    "article_id": 257713968, 
    "category_id": "category3" 
}, 
{ 
    "article_id": 257717376, 
    "category_id": "category4" 
}] 

我應該怎樣做一個查詢得到的結果是這樣

[{ 
    "article_id": 257710962, 
    "category_id": ["category1", "category2"] 
}, 
{ 
    "article_id": 257713968, 
    "category_id": "category3" 
}, 
{ 
    "article_id": 257717376, 
    "category_id": "category4" 
}] 

我需要做的查詢,因爲我使用分頁在我的頁面上。所以,防止重複是必須的。 (我使用的article_id作爲我的主鍵)

回答

0

如果每個文件源是這樣

"_source": { 
       "article_id": 257710962, 
       "category_id": "category2" 
      } 

那麼你可以嘗試條款聚集排名靠前的聚集

GET /my_index/my_type/_search 
{ 
    "size": 0, 
    "aggs": { 
     "agg1": { 
     "terms": { 
      "field": "article_id" 
     }, 
     "aggs": { 
      "agg2": { 
       "top_hits": {} 
      } 
     } 
     } 
    } 
} 

作進一步說明:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-metrics-top-hits-aggregation.html

+0

「from」鍵怎麼樣?對於分頁 – kudaponi

+0

我不認爲如果聚合_'from'_鍵將起作用。 您需要猜測預期結果總數的可靠大小,然後以數組 [https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations]傳遞_'size'_參數-bucket-方面,aggregation.html#搜索聚合-桶方面,聚集近似-數] – torzonhot