elasticsearch - 如何聚合和过滤多行

时间:2017-02-26 15:07:50

标签: elasticsearch

我有以下数据。

enter image description here

如何查询所有拥有货币1和2的国家/地区?

国家/地区可以有多行具有相同的货币(因此计数,无法帮助)

1 个答案:

答案 0 :(得分:2)

您应按所需货币过滤查询,并使用术语汇总进行汇总 棘手的部分是强制Elasticsearch获得所有可能的国家。这可以使用size = 0参数来表示聚合

currencies_criteria = [1,2]

elasticsearch_query = {
    "query": {
        "filtered": {
            "filter": {
                "bool": {
                    "must" : [
                        {
                            "term": {"currency" : currencies_criteria}
                        }
                    ]

                }
            }
        }
    },
    "aggs" : {
        "country_count" : {
            "terms" : {
                "field" : "country",
                #https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-terms-aggregation.html#search-aggregations-bucket-terms-aggregation-approximate-counts
                "size"  : 0
            }
        }
    }
}

您可以在this notebook

中查看此答案的示例执行情况