Elasticsearch高级查询:实战代码演示聚合nbqId与能量计算
175 浏览量
更新于2024-08-03
收藏 3KB TXT 举报
本文档主要介绍了如何在Elasticsearch中执行高级聚合查询,特别是针对特定场景下的数据筛选和分组分析。通过提供的代码示例,我们可以看到一个搜索请求,该请求针对idx_znyg_datanbqseries索引中的数据进行查询。
首先,查询的`bool`条件包括三个部分:
1. `term`查询用于匹配`bdsId`字段,其值为"46432F6736384B078C12AE515AAF0F48",这是文档必须包含的键值对,增强了查询的优先级。
2. `range`查询限制了`fetchTime`字段的时间范围,从2022年2月9日16:00:00.606Z到2022年2月10日15:59:59.606Z,包括这两个时间点,同样具有较高的权重。
3. `term`查询确保`delFlag`字段的值为0,即只考虑未删除的数据。
`adjust_pure_negative`和`boost`属性调整了整个查询的行为,前者用于处理没有匹配到任何文档的情况,后者提升了查询的总体权重。
聚合部分是查询的核心,`group_by_nbq`使用`terms`函数按`nbqId`字段对结果进行分组,设置的大小为65536,确保至少有一个文档匹配每个组。`min_doc_count`设置为1,意味着每个分组至少需要有一个文档,`shard_min_doc_count`则允许在分片级别有更少的文档。`show_term_doc_count_error`设为`false`表示不显示计数错误信息,排序规则是先降序按照计数(_count)排序,然后升序按照键(_key)。
嵌套在`group_by_nbq`内的`nbq_energy`是一个`scripted_metric`聚合,它使用Painless脚本语言来计算每个`nbqId`组的能量指标。`init_script`初始化一个名为`nbqPvPowerMap`的HashMap,用于存储每个`nbqId`及其对应的能量值。`map_script`部分根据当前文档的`nbqId`和`fetchTime`计算并更新这个映射,这可能是基于时间窗口内的某个统计值,如总功率。
总结来说,本文提供了一个详细的示例,展示了如何在Elasticsearch中进行高级聚合查询,包括定制化查询条件、分组以及使用脚本进行复杂计算,这对于数据分析师和开发人员在处理大规模数据时理解和优化搜索结果非常有用。
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
2023-07-28 上传
2023-05-30 上传
2023-01-09 上传
2018-03-02 上传
点击了解资源详情
八方来财添好运
- 粉丝: 2063
- 资源: 6
最新资源
- EJB 3 学习资料 ,适合初学者
- jdk的classpath路径和环境配置
- Sql中判断是否存在数据库、表
- 使用smtp发送邮件(源码.txt
- 回溯法解八皇后问题 vc++实现
- Allegro轉Gerber注意事項
- 《操作系统设计与实现》中文修订版.pdf
- 全面JAVA命令大全
- STM32F10xxx_RM0008_CH_Rev7V3.pdf
- c#数据绑定dataBinding
- Linux进程源代码分析.pdf
- Java+Development+with+Ant.pdf
- make手册3.80
- 利用存储过程生成报表
- 架构风格与基于网络的软件架构设计.pdf
- 计算机四级考试2008年4月、9月真题