簡體   English   中英

彈性搜索聚合和范圍

[英]Elastic search aggregation and range

我們希望聚集一些價值。 例如,假設我們正在索引在組織中注冊的用戶。

我們想讓注冊用戶數像這樣分裂:

  • 從gmail注冊:900
  • 通過fb注冊:800
  • 通過雅虎注冊:700
  • 通過自己的應用程序注冊:1500
  • 通過他人注冊:1600

預期我們需要存儲0到1000個用戶(gmail,fb,yahoo-3個應用程序)。以及1001到2000個用戶(自己的應用程序,其他應用程序-2個應用程序)。

我們如何在彈性搜索中實現這一目標? 有什么建議么 ?

謝謝

假設您正在索引用戶對象,如下所示:

POST users/user
{
  "login":"user1",
  "organization":"fb"
}

您正在嘗試通過用戶organization價值來匯總他們。 為此,您必須使用terms匯總。

您的查詢將如下所示:

POST users/_search?search_type=count
{
  "aggs": {
    "by_organization": {
      "terms": {
        "field": "organization"
      }
    }
  }
}

注意:此處的search_type = count響應時間較短,因為不會返回結果匹配(請參閱此處 )。

您的搜索響應將類似於:

{
   (...)
   "aggregations": {
      "by_organization": {
         "doc_count_error_upper_bound": 0,
         "sum_other_doc_count": 0,
         "buckets": [
            {
               "key": "app",
               "doc_count": 4
            },
            {
               "key": "fb",
               "doc_count": 3
            },
            {
               "key": "gmail",
               "doc_count": 2
            }
         ]
      }
   }
}

您可以看到與每個組織值相對應的存儲桶。

意識到:

  • 默認情況下,僅返回前10個存儲桶(請參閱terms聚合”的size參數)
  • 這個簡單的示例可以簡化組織價值,但是在現實生活中,您必須將組織字段設置為not_analyzed才能匯總原始價值(而不是通過分析獲得的條件)

我強烈邀請您閱讀有關分析的更多信息,以及terms匯總文檔

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM