ElasticSearch。如何在一个查询中获取多个范围的计数?

时间:2013-09-26 07:50:32

标签: count group-by elasticsearch range

目前我通过此查询计算了一系列值:

$ curl -XGET 'http://localhost:9200/myindex/mytype/_count' -d '{
    range:{myfield:{gt:"start_val",lt:"end_val"}}
}
'

现在我有几个范围,需要计算每个范围。我可以用一个查询来获取它们,而不是每次都重新查询吗?

我用 search_type = count 调查了multi-search但是可能不是正确的方法...(它给了我一些聚合计数而不是分组...看起来就像我误用它一样)

编辑:我发现range facet会很惊人,但遗憾的是我的价值观既不是数字也不是日期,它们只是字符串......

EDIT2:根据接受的答案,这就是我最终的结果:

$ curl -XGET 'http://localhost:9200/myindex/mytype/_search?search_type=count' -d '{
    facets : {
        range1 : {
            filter : {
                range:{myfield:{gt:"start_val1",lt:"end_val1"}}
            }
        },
        range2 : {
            filter : {
                range:{myfield:{gt:"start_val2",lt:"end_val2"}}
            }
        }
    }
}
'

1 个答案:

答案 0 :(得分:1)

这是ES的创建者提供解决方案的链接(即:几个过滤器方面)

solution

因此,每个范围的一个滤镜面应该可以正常工作。

以下是doc的链接:

doc api

希望有所帮助