当前位置: 首页 > 面试题库 >

如何在elasticsearch中汇总布尔值?

轩辕翰
2023-03-14
问题内容

我每天要进行几个实验,在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

但是,可以将所有布尔值合计为true,将true设置为1,将false设置为零,然后每天接收平均值。

谁能帮我这个?

非常感谢!


问题答案:

第一个0/1表示不完全是ES布尔表示。布尔类型为true /
false。第二统计汇总只能在数字字段上完成,而不能在字符串字段上完成。这就是为什么它适用于0/1表示的原因。

您可以使用扩展统计信息中的脚本来转换此值

{
    "aggs" : {
        ...

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

要查看聚合中脚本编写的一些示例用法,请查看此处。



 类似资料:
  • 问题内容: 我需要如下汇总一个数组 两个文档示例: 我想聚集阵列,找出所有的已经去了。我想要这样的东西: 其中,是数组长度减去1 的长度。我尝试了术语“聚合”和“和”,但无法输出所需的输出。 可以对文档结构进行更改,因此,如果这样对我有所帮助,我将很高兴知道。 问题答案: 在“ 城市 ” 上方发布的文档中,它不是json数组,而是json对象。如果可以更改文档结构,则可以将文档中的城市更改为对象数

  • 问题内容: 我想创建以下查询的等效项- 我使用必须和应该尝试了布尔查询的不同组合,但似乎没有任何效果。能做到吗? 问题答案: 这样的事情怎么样:

  • 问题内容: 我想使用 AND OR 获取所有文档。 我写错了这个逻辑吗? 为什么我的查询返回0个结果? 注意 :我可以接受查询或过滤器来解决此问题。 这些是一些示例文档: 询问 问题答案: 您无法获得结果的主要原因是因为您试图对进行过滤,这是一个已分析的字段。如果要对该字段进行匹配,则需要更新类型映射以将该字段设置为。请参见以下示例映射: 从此处开始阅读有关映射的信息:http : //www.e

  • 本文向大家介绍python中的Elasticsearch操作汇总,包括了python中的Elasticsearch操作汇总的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python中的Elasticsearch操作汇总,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 导入包 本地连接 创建索引 ingore=400 ingore是忽略

  • 我在这里遵循指南https://dzone.com/articles/23-usplient-ellasticsearch-example-queries,下面的bool查询让我感到困惑: 根据教程,查询的解释是: 搜索标题中有“ellasticsearch”或“solr”字样的书,由“Clinton Gormley”撰写,但不由“Radu Gheorge”撰写 我的问题是,bool查询中有3个条

  • 我使用bool查询的必须和must_not功能。它像预期的那样工作,直到我得到一个3级深的属性。 工作正常并返回结果,但如果我在bool查询中执行相同的操作,如。。 不返回任何结果。这是为什么?????记住其他bool查询,例如。。 干得很好!它只适用于任何3级深的字段,因此搜索任何1级深的术语。建议3。建议3