2016-01-06 50 views
0

我是Elasticsearch的新手,我的程序有問題。
爲了在SQL中將結果分組爲像「group by」語句。我用聚合。
但我意識到有一個問題,我需要在這裏解決。我用下面的語句來組我的結果:在Elasticsearch彙總中獲取更多字段而不是唯一一個

{ 
    "aggs": { 
    "agg1": { 
     "terms": { 
     "field": "field1" 
     }, 
     "aggs": { 
     "agg2": { 
      "terms": { 
      "field": "field2" 
      }, 
      "aggs": { 
      "agg3": { 
       "terms": { 
       "field": "field3" 
       } 
      } 
      }   
     } 
     } 
    } 
    } 
} 

我的問題是:場和字段3的值取決於field1的值,所以如果你能得到field1的值,你也可以得到場2和字段3的值。因此,像上面那樣進行聚合會花費很多時間來完成我的程序(我已經測試了它並意識到它耗費了比分組field1慢6倍的速度)。
所以我的問題是:是否有可能只組field1(只使用一個「aggs」),但也得到field2和field3值?
如果否,那麼還有其他可能的方法來完成我的工作嗎?
感謝提前:)

回答

0

如果我理解正確,你正在尋找Top Hits聚合,可以包含任意數量的字段與source filtering,試試這個

{ 
    "size": 0, 
    "aggs": { 
    "agg1": { 
     "terms": { 
     "field": "field1" 
     }, 
     "aggs": { 
     "include_fields": { 
      "top_hits": { 
      "size": 100, 
      "_source": { 
       "include": [ 
       "field2", 
       "field3" 
       ] 
      } 
      } 
     } 
     } 
    } 
    } 
} 
+0

謝謝你這麼多,使得「大小」等於1是我需要的。 –

+0

很高興我可以幫忙,你可以根據你想要的尺寸來製作尺寸,默認爲10 – ChintanShah25

相關問題