如何聚合弹性搜索布尔值?(How to aggregate boolean values in el

2019-10-21 16:09发布

我有几个实验,每天存储实验的误差和一个布尔值(如果结果是确定)在elasticsearch。 现在,我想(使用highchart JS),以显示在图表的结果。 我用聚合这样的查询收到的每一天,包括标准偏差的合计错误:

query: {
                    filtered: {
                        filter: {
                            range : {
                                date: {
                                    "gte":"2015-1-1",
                                    "lte": "2016-1-1,
                                    "time_zone": "+1:00"
                                }
                            }
                        }
                    }
                },
                // Aggregate on the results
                aggs: {
                    group_by_date: {
                        terms:{
                            field:"date",
                            order: {_term:"asc"}
                        }, 
                        aggs:{
                            error_stats:{
                                extended_stats:{
                                    field:"error"
                                } 
                            }
                        }
                    }
                }

我所面临的问题是,我不能检索布尔值相同的方式,我从数据库中获取的双重错误。 当我刚刚更改字段名称为“确定”,在

aggs:{
                            error_stats:{
                                extended_stats:{
                                    field:"ok"
                                } 
                            }
                        }

我收到此错误信息:

ClassCastException[org.elasticsearch.index.fielddata.plain.PagedBytesIndexFieldData cannot be cast to org.elasticsearch.index.fielddata.IndexNumericFieldData

然而,这将是确定aggreate所有的布尔值usign为1真假零,然后接受每一天的平均值。

谁能帮我这个?

非常感谢!

Answer 1:

首先0/1表示不完全ES布尔表示。 有一个布尔类型为真/假。 第二统计聚合可以在数字领域只能做而不是字符串字段。 这就是为什么它工作了0/1表示。

您可以将使用该值在扩展统计脚本

{
    "aggs" : {
        ...

        "aggs" : {
            "grades_stats" : {
                "extended_stats" : {
                    "field" : "grade",
                    "script" : "_value == 'T' ? 1 : 0",
                }
            }
        }
    }
}

要查看脚本的聚集一些使用例子,你可以看看这里 。



文章来源: How to aggregate boolean values in elastic search?