【问题标题】:ElasticSearch. How to get counts for several ranges in one query?弹性搜索。如何在一个查询中获取多个范围的计数?
【发布时间】:2013-09-26 07:50:32
【问题描述】:

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

$ 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"}}
            }
        }
    }
}
'

【问题讨论】:

    标签: count group-by elasticsearch range


    【解决方案1】:

    这是一个链接,ES的创建者给出了一个解决方案(即:几个过滤器方面)

    solution

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

    这是该文档的链接:

    doc api

    希望对你有帮助

    【讨论】:

    • 谢谢。根据您的回答,用我最终得到的结果更新了我的问题。
    • 很高兴我能帮上忙
    最近更新 更多