2016-04-22 53 views
0

我們正在研究技術選項,這將允許我們對數百萬個文檔進行最常見的術語查詢。我們對ES的舊版本有一點經驗,但決不是專家。通過閱讀ES文檔是否可以做到這一點,我不清楚。ElasticSearch隨着時間的推移最頻繁的術語

想象一下來自10,000個不同人的數百萬推文的數據集。我們要做到以下幾點:

爲10000個高音單元的每一個,是什麼,他們已經在推特在最後一小時的前10名最頻繁出現的詞條,在最後一天的最後一年?

同樣地,如果每條推文記錄都包含上述井號標籤的數組,則爲最常見的井號標籤計算相同的統計量。

如果一個選項是隻在最終用戶通過用戶界面詢問它們時按需進行這些計算,那麼這也是一個選項。我們只希望實際使用這些計算中的一小部分。

這可以在ES上以有效的方式完成嗎?你能否提供一個粗略的例子,以便我們知道如何使用API​​?感謝

回答

0

如果我理解正確的話,你要通過用戶獲得頂級條款

POST /tweets/tweet 
{ 
"text": "We're researching technology", 
"user": 1, 
"hasttags": ["hastag", "hastag1"] 

} 

POST /tweets/tweet 
{ 
"text": "We have a little experience with an older version of ES #hastag", 
"user": 1, 
"hasttags": ["hastag", "hastag2"] 
} 



POST /tweets/tweet 
{ 
"text": "For each one of the 10,000 tweeters, what are the top-10 most #hastag", 
"user": 2, 
"hasttags": ["hastag", "hastag3"] 
} 


POST /tweets/_search 
{ 
    "size": 0, 
    "query": { 
    "terms": { 
     "user": [ 
     "1" 
     ] 
    } 
    }, 
    "aggs": { 
    "users": { 
     "terms": { 
     "field": "user", 
     "size": 10 
     }, 
     "aggs": { 
     "terms": { 
      "terms": { 
      "field": "text", 
      "size": 10 
      } 
     }, 
     "hasttags": { 
      "terms": { 
      "field": "hasttags", 
      "size": 10 
      } 
     } 
     } 
    } 
    } 
} 

這是例子,因爲這裏的問題是,它僅限於10個用戶,因爲在ES 1.4是沒有辦法通過聚合進行分頁。另一方面,您可以指定大小爲10,000,但您需要嘗試查看它是如何在真實數據和羣集計算機上工作的,因爲它需要更多內存。我在我的搜索引擎中創建最常用的搜索詞,我爲聚合設置1000,它工作得很酷。

TODO: 查找到stop words排除像「等

+0

感謝,我們將探討這個「一」,」條件!注意我之後做了一個編輯,說當應用程序的最終用戶請求它們時,我們只需要這樣的統計信息。這可能會簡化這個問題,我不知道。 – David

+0

@David您更新了querstion有標籤,所以在幾分鐘內我會更新我的答案 –

+0

@David我已經更新了我的答案,如果我正確地理解了您的話,「當最終用戶要求他們」意味着您的數量有限用戶在哪裏你想獲得統計數據,如果那是正確的,那麼我看到我更新的問題 –

相關問題