目前,我正在通过此查询获取一系列值的计数:

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

现在我有几个范围,并且每个范围都需要计数。我可以只查询一次,而不必每次都重新查询吗?

我用search_type = count调查了multi-search,但可能不是正确的方法...(它给了我一些汇总计数,而不是按...进行分组...好像我滥用了它)

编辑:我发现range facet很棒,但是不幸的是我的值既不是数字,也不是日期,它们只是字符串...

编辑2:这是我基于接受的答案得出的结果:
$ 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"}}
            }
        }
    }
}
'

最佳答案

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

solution

因此,每个范围一个过滤器构面应该可以正常工作。

这是指向doc的链接:

doc api

希望能帮助到你

关于count - ElasticSearch。如何在一个查询中获取多个范围的计数?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19022361/

10-16 12:57