c# Elasticsearch统计Nested的数据

news/2024/10/21 9:45:30

我是直接问百度ai

    es统计是nested结构的数据,数据有年份:reportyear,名称:accountnamezh,类型:reportperiodtype,利润:originalvalue,,需要统计:2024年,名称:营业收入,类型:2,的利润合计是多少,利润金额比较大,需要除以100000000

然后生成的es是

POST /your_index/_search
{"query": {"bool": {"must": [{"nested": {"path": "financial_data","query": {"bool": {"must": [{ "term": { "financial_data.reportyear": 2024 } },{ "term": { "financial_data.accountnamezh": "营业收入" } },{ "term": { "financial_data.reportperiodtype": 2 } }]}}}}]}},"aggs": {"total_profit_in_millions": {"nested": {"path": "financial_data"},"aggs": {"sum_profit": {"sum": {"script": {"source": "doc['financial_data.originalvalue'].value / 100000000"}}}}}}
}

  生成c#代码

using Nest;
using System;
using System.Threading.Tasks;public class ElasticsearchDocument
{public NestedField FinancialData { get; set; }
}public class FinancialData
{public int ReportYear { get; set; }public string AccountNameZh { get; set; }public int ReportPeriodType { get; set; }public double OriginalValue { get; set; }
}// 注意:这里的NestedField和Elasticsearch的嵌套字段类型相对应,
// 但实际上NEST中的NestedField通常用于查询时的映射,而不是文档模型的一部分。
// 在查询时,我们会用到一个与FinancialData结构相似的匿名类型来构建查询。
// 这里的模型主要是为了展示目的。class Program
{private static ElasticClient _client;static async Task Main(string[] args){_client = new ElasticClient(settings: new ConnectionSettings(new Uri("http://localhost:9200")));var response = await _client.SearchAsync<ElasticsearchDocument>(s => s.Index("your_index").Query(q => q.Nested(n => n.Path(p => p.FinancialData).Query(nq => nq.Bool(b => b.Must(m => m.Term(t => t.Field(f => f.FinancialData.ReportYear).Value(2024)).Term(t => t.Field(f => f.FinancialData.AccountNameZh).Value("营业收入")).Term(t => t.Field(f => f.FinancialData.ReportPeriodType).Value(2))))).Aggregations(a => a.Nested("total_profit_in_millions", n => n.Path(p => p.FinancialData).Aggregations(na => na.Sum("sum_profit", s => s.Script(sc => sc.Source("doc['financial_data.original_value'].value / 100000000"))))))).Size(0)); // 我们不需要实际的文档,只需要聚合结果// 处理响应if (response.IsValid){var totalProfitInMillions = response.Aggregations.Nested("total_profit_in_millions")?.Sum("sum_profit")?.Value;Console.WriteLine($"Total Profit in Millions: {totalProfitInMillions}");}else{Console.WriteLine("Search failed: " + response.ServerError.Error.Reason);}}
}

然后在这个基础上调整就完成了

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/74057.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Day10 备战CCF-CSP练习

202303-4Day10 题目描述 十滴水是一个非常经典的小游戏。小 \(C\) 正在玩一个一维版本的十滴水游戏。 我们通过一个例子描述游戏的基本规则。 游戏在一个$ 1c$ 的网格上进行,格子用整数$ x(1≤x≤c)$ 编号,编号从左往右依次递增。 网格内 \(m\) 个格子里有 \(1∼4\) 滴水,其…

YOLOv11环境搭建推理测试

引子 2024年9月30日,Ultralytics在其活动YOLOVision中正式发布了YOLOv 11。YOLOv 11是由位于美国和西班牙的Ultralytics团队开发的YOLO的最新版本。几个月前YOLOv10发布(感兴趣的童鞋可以移步https://blog.csdn.net/zzq1989_/article/details/139408779?spm=1001.2014.3001.…

SDCN:《Structural Deep Clustering Network》

代码:https://github.com/461054993/SDCN 摘要 聚类是数据分析中的一项基本任务。 最近,主要从深度学习方法中获得灵感的深度聚类实现了最先进的性能,并引起了相当大的关注。 当前的深度聚类方法通常借助深度学习强大的表示能力(例如自动编码器)来提高聚类结果,这表明学习…

TCP和UDP的报文格式

TCP和UDP的报文格式概要了解TCP和UDP的报文格式对于网络通信、系统设计、故障排查和安全性等多个方面都非常重要。一、TCP 报文格式(Transmission Control Protocol)TCP是面向连接、可靠的传输协议,其报文格式较复杂。TCP报文的格式如下: 上图简化如下:| 源端口(16位…

008数据绑定

v-bind 单向数据绑定 v-model 双向数据绑定

极速、便捷!一个接入 AI 的匿名在线即时聊天室!

AQChat —— 一个已接入 AI 的极速、便捷的匿名在线即时 AI 聊天室。基于 Netty 以及 protobuf 协议实现高性能,对标游戏后端开发。大家好,我是 Java陈序员。 之前给大家推荐过一款基于 livekit 和 Next.js 的匿名聊天室。 今天,再给大家介绍一个便捷开源的匿名在线聊天室,…

MoH:融合混合专家机制的高效多头注意力模型及其在视觉语言任务中的应用

在深度学习领域,多头注意力机制一直是Transformer模型的核心组成部分,在自然语言处理和计算机视觉任务中取得了巨大成功。然而,研究表明并非所有的注意力头都具有同等重要性,许多注意力头可以在不影响模型精度的情况下被剪枝。基于这一洞察,这篇论文提出了一种名为混合头注意力…

10.14-10.20 总结

1234567890联考题解:https://www.cnblogs.com/british-union/p/liankao.html 如果忽略挂分,这周打的还可以。但是问题是挂了不少分导致实际得分远不如期望得分。 做题: 做了几道 Project Euler,有一道没想出来:588,638,457,307。 P10353:群论题 AGC012F 尝试枚举一下前…