2016-07-12 76 views
0

我很有興趣進行子聚合,但對於特定的關鍵字值。多個過濾器聚合vs返回所有的桶

"aggregations" : { 
     "Keyword" : { 
      "terms" : { 
      "field" : "keyword" 
      }, 
     "aggregations" : { 
      "Concept" : { 
      "terms" : { 
      "field" : "concept" 
      } 
     } 

下只返回前10名第一,這並不一定包含了我在有趣的值

我看到我的解決問題的方式主要有兩種:

  • 返回所有的桶,然後選擇我感興趣的桶。
  • 爲所有我感興趣的值添加過濾器聚合。所以如果我在10個關鍵字/值中感興趣,我將執行10個過濾器聚合。

性能方面的最佳解決方案是什麼?

+0

我不明白這個要求。也許舉個例子吧? –

回答

0

因此,如果我對10個關鍵字/值感興趣,我將執行10個過濾器聚合。

這不一定是正確的。

您可以創建一個過濾器,消除不需要的關鍵字,你可以在查詢階段做前期:

{ 
    "size" : 0, 
    "query" : { 
    "bool" : { 
     "filter" : [ 
     { 
      "terms" : { 
      "keyword" : [ "abc", "def", "ghi" ] 
      } 
     } 
     ] 
    } 
    }, 
    "aggs" : { 
    "Keyword" : { 
     "terms" : { 
     "field" : "keyword" 
     }, 
     "aggs" : { 
     "Concept" : { 
      "terms" : { 
      "field" : "concept" 
      } 
     } 
     } 
    } 
    } 
} 

查詢階段將篩選下來只是abcdefghi。然後,聚合將按照您的預期工作,但僅針對具有這些值的文檔。

相關問題