如何在elasticsearch中使用多个查询字符串和聚合

时间:2017-12-14 08:36:54

标签: elasticsearch

如何在elasticsearch中使用带有聚合函数的多个查询字符串? 例如:

if a>0 AND a<1, then {"low":count(aggregate count of records within 0 to 1)}
else if a > 1 AND a < 100, then {"normal":count(aggregate count of records within 1 to 100)}
else {"high":count(aggregate count of records after 100)}

如何使用Request Body Query字符串实现此目的? 提前谢谢。

1 个答案:

答案 0 :(得分:0)

假设a是您搜索的字段,我认为最简单的方法是对每个用例使用range aggregation和桶(低,正常,高)。

您无法将聚合绑定到查询条件。你必须自己做代码。但是如果你使用范围聚合,你可以定义你的桶,如

POST /_search
{
    "aggs" : {
        "a_ranges" : {
            "range" : {
                "field" : "a",
                "ranges" : [
                    { "to" : 1 },
                    { "from" : 1, "to" : 10 },
                    { "from" : 10 }
                ]
            }
        }
    }
}

根据您的查询,其中两个存储桶将保持为空,但这可以为您提供所需的结果