簡體   English   中英

在彈性搜索中添加條件以過濾聚合

[英]Add condition to filter aggregation in elastic search

我想要基於彈性搜索中應用的某些過濾器對變量的每個值進行計數。 例如,我想要所有年齡段的學生,但要過濾掉來自加利福尼亞的學生。

年齡段是文本字段,包含這樣的數組,

"age_group": ["5-6-years", "6-7-years"]

我有點想要這樣的查詢,但這不起作用。 它拋出一個錯誤說

無法解析名稱為[count]的BaseAggregationBuilder:找不到解析器

"student_aggregation": {
    "nested": {
        path": "students"
    },
    "aggs": {
        "available": {
            "filter": {
                "term": { "students.place_of_birth": "California" }
            },
            "aggs" : {
                "age_group" : { "count" : { "field" : "students.age_group" } }
            }
        }
    }
}

向您的部隊尋求幫助。

這是因為沒有稱為count的度量聚合,而是使用value_count代替:

"student_aggregation": {
    "nested": {
        path": "students"
    },
    "aggs": {
        "available": {
            "filter": {
                "term": { "students.gender": "boys" }
            },
            "aggs" : {
                "age_group" : { "value_count" : { "field" : "students.age_group" } }
                                     ^^^
                                     |||
            }
        }
    }
}

更新

經過討論, terms聚合”比“ value_count更合適。 修復了映射關系后(該texttext而不是keyword ),該查詢可以正確計算出

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM