2015-04-27 64 views
0

如何在ElasticSearch中執行復雜計算,這需要查找索引中某個條目的最大值和最小值?對ElasticSearch中的一組數據執行復雜計算

下面的例子很愚蠢,但爲了說明起見,它起到了作用。

鑑於其被保存到索引對象User

class User { 
    String name 
    int age; 
} 

的要求,對具有相同名稱的所有用戶,才能得到最年輕和最老的年齡之間的差異。

例如,給出下面的數據集:

Name Age 
Tom  20 
Tom  35 
Tom  45 
Sam  10 
Sam  50 
Sam  90 

計算會產生以下結果:

Tom = (45-20) = 25 
Sam = (90-10) = 80 

已經計算在ElasticSearch的值,然後他們必須內Kibana訪問。

我是ElasticSearch的新手,並且非常感謝任何代碼示例。

回答

0

你可以得到每個用戶的最小值和最大值,那麼你就需要在客戶端做休息 -

{ 
    "aggs": { 
    "users": { 
     "terms": { 
     "field": "Name" 
     }, 
     "aggs": { 
     "maxAge": { 
      "max": { 
      "field": "age" 
      } 
     }, 
     "minAge": { 
      "min": { 
      "field": "age" 
      } 
     } 
     } 
    } 
    } 
} 

在這裏,你需要使用terms aggregation每名水桶。 每桶需要使用最大和最小聚合獲得最大值和最小值。

休息你需要照顧客戶端。

+0

謝謝。這個JSON應用或添加到ElasticSearch的方式和位置? – user1052610