2015-08-26 82 views
1

我想從彈性搜索的索引器中獲取列中兩個項目的計數。在我的索引器中有一個名爲「category」的列,它包含多個條目。我有興趣在多個日期獲得「計費」和「支出」。對此,我寫了下面的查詢,它不適用於兩個值。我可以將「計費」或「支出」這兩個值同時拉到一個值,但不是一個值。elasticsearch中的過濾值

{"dates": 
{"date_histogram": 
    {"field": "createdDateTime", 
     "interval": "day"}, 

     "aggs": {"fields": 
      {"term": 
       {"field": "type", 
        "include": ["billing", "expenditure"] 



       }}}}} 

上面的代碼是不是在這種情況下工作,使其工作,我需要在「包含」行更改爲

"include": "billing" 

或 「包括」:「收支兩條線」

這將是很大的幫助,如果有人看着這個,並幫助。:)

下面的答案正在爲我的職位上面,現在我遇到了上述pos噸:

在我的'類型'字段中,我想篩選一個更多的值稱爲「花上」。這裏的問題是 - ES認爲這兩個詞是兩個詞,結果並不如預期。請幫忙。只是想將這兩個措辭單詞作爲一個單詞而不是兩個。

+0

@jgr,請我編輯了帖子。請查看最後兩個部分查看我更新的帖子。用兩個措詞來解決一個小問題。 – santoshM

+0

@keety:請檢查我是否編輯過這篇文章。請查看最後兩個部分查看我更新的帖子。用兩個措詞來解決一個小問題。 – santoshM

回答

1

include需要一個正則表達式模式。正如@jgr指出的,這僅適用於elasticsearch < 1.5.0的版本。因此,對於查詢 提供的例子看起來會是如下的<版本1.5.0:

"aggs": { 
     "aggterm": { 
     "terms": { 
      "field": "type", 
      "include" : "billing|expenditure" 
     } 
     } 
    } 

如果不是你在OP具有的例子應該工作

+0

非常感謝Keety,它的工作.. :) – santoshM

2

從ES文檔(https://www.elastic.co/guide/en/elasticsearch/reference/1.5/search-aggregations-bucket-terms-aggregation.html?q=terms%20agg#_filtering_values):

可以過濾要創建桶的值。 這可以使用基於正則表達式字符串的 包含和排除參數或1.5.0中添加的精確值[1.5.0] 的數組完成。支持數組值。

因此,它可以使用數組,因爲1.5版本

"aggs": { 
     "aggterm": { 
     "terms": { 
      "field": "type", 
      "include" : ["billing", "expenditure"] 
     } 
     } 
    }