ElasticsearchCRUD使用(十六)【Elasticsearch聚合】

es中ElasticsearchRepository 的原理和使用 把数据存储到es中,有两种方式一种是ElasticsearchRepository 接口,另一种是ElasticsearchTemplate接口,今天我们主要分析ElasticsearchRepository接口。 一、ElasticsearchRepository 原理分析: 1、首先springBoot 项目的pom文件中引入jar包: <!-- ES搜索 --> <dependency> <groupId>org.s. 阅读详情

本文介绍如何使用ElasticsearchCRUD实现Elasticsearch聚合搜索请求和响应。

Elasticsearch聚合

Elasticsearch聚合API允许您在近实时或即时的时候对数据进行总结,计算,分组。这些聚合可以实现子聚合,可以根据需要再次实现更多的子聚合。这允许非常灵活的API。 ElasticsearchCRUD支持以下聚合:

最小聚合,最大聚合,总和,平均聚合,统计量,扩展统计量,数值聚合,百分位数聚合,百分位数等级聚合,基数聚合,地理边界聚合,顶点聚合,脚本公制聚合,全局聚合,过滤器聚合,多过滤器聚合,过滤器命名聚合,缺少聚合,嵌套聚合,反向嵌套聚合,子聚合,桶聚合,重要桶聚合,范围聚合,日期范围聚合,直方图聚合,日期直方图聚合,地理距离聚合,GeoHash网格聚集(Min Aggregation, Max Aggregation, Sum Aggregation, Avg Aggregation, Stats Aggregation, Extended Stats Aggregation, Value Count Aggregation, Percentiles Aggregation, Percentile Ranks Aggregation, Cardinality Aggregation, Geo Bounds Aggregation, Top hits Aggregation, Scripted Metric Aggregation, Global Aggregation, Filter Aggregation, Filters Aggregation, Filters Named Aggregation, Missing Aggregation, Nested Aggregation, Reverse nested Aggregation, Children Aggregation, Terms Aggregation, Significant Terms Aggregation, Range Aggregation, Date Range Aggregation, Histogram Aggregation, Date Histogram Aggregation, Geo Distance Aggregation, GeoHash grid Aggregation )

这些聚合可以分为公制和桶聚合。两种聚合类型都可以是单值聚合或多值聚合。桶聚合可以包含子聚合。

公制聚集
- 单值公制
- 多值公制

桶级聚合
- 单桶聚合
- 多重桶聚合

Terms Bucket聚合的示例

桶聚合是基于单个字段的多值聚合。以下示例创建一个名为testFirstName的聚合,并使用person索引中person类型的firstname字段。

SeachType设置为键入count,以便在搜索请求中没有返回命中。聚合搜索的结果可以使用聚合的testFirstName名称直接从Json对象转换为TermsBucketAggregationsResult类。

TermsBucketAggregationsResult aggResult;
var search = new Search
{
    Aggs = new List<IAggs>
    {
        new TermsBucketAggregation("testFirstName", "firstname")
        {
            Size = 20
        }
    }
};

using (var context = new ElasticsearchContext(ConnectionString, ElasticsearchMappingResolver))
{
    var items = context.Search<Person>(
        search, 
        new SearchUrlParameters 
        { 
            SeachType = SeachType.count 
        });

    aggResult = 
        items.PayloadResult.Aggregations.GetComplexValue<TermsBucketAggregationsResult>("testFirstName");
}

请求发送如下:

POST http://localhost:9200/persons/person/_search?&search_type=count HTTP/1.1
Content-Type: application/json
Host: localhost:9200
Content-Length: 68
Expect: 100-continue
Connection: Keep-Alive

{
    "aggs": {
        "testFirstName": {
            "terms": {
                "field": "firstname",
                "size": 20
            }
        }
    }
}

结果是:

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 875

{
    "took": 3,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 19972,
        "max_score": 0.0,
        "hits": []
    },
    "aggregations": {
        "testFirstName": {
            "doc_count_error_upper_bound": 50,
            "sum_other_doc_count": 18159,
            "buckets": [{
                "key": "katherine",
                "doc_count": 99
            },
            {
                "key": "james",
                "doc_count": 97
            },
            {
                "key": "marcus",
                "doc_count": 97
            },
            {
                "key": "alexandra",
                "doc_count": 93
            },
            {
                "key": "dalton",
                "doc_count": 93
            },
            {
                "key": "lucas",
                "doc_count": 93
            },
            {
                "key": "morgan",
                "doc_count": 93
            },
            {
                "key": "richard",
                "doc_count": 93
            },
            {
                "key": "isabella",
                "doc_count": 92
            },
            {
                "key": "seth",
                "doc_count": 92
            },
            {
                "key": "natalie",
                "doc_count": 91
            },
            {
                "key": "eduardo",
                "doc_count": 90
            },
            {
                "key": "kaitlyn",
                "doc_count": 90
            },
            {
                "key": "robert",
                "doc_count": 90
            },
            {
                "key": "sydney",
                "doc_count": 90
            },
            {
                "key": "ian",
                "doc_count": 89
            },
            {
                "key": "julia",
                "doc_count": 89
            },
            {
                "key": "chloe",
                "doc_count": 88
            },
            {
                "key": "xavier",
                "doc_count": 88
            },
            {
                "key": "david",
                "doc_count": 87
            }]
        }
    }
}

命中值也可以作为子聚合添加到桶聚合中。 在以下示例中,TermsBucketAggregation类中的子聚合包含单个TopHitsMetricAggregation聚合。

var search = new Search
{
    Aggs = new List<IAggs>
    {
        new TermsBucketAggregation("testLastName", "lastname")
        {
            Size = 5,
            Aggs = new List<IAggs>
            {
                new TopHitsMetricAggregation("tophits")
                {
                    Size = 2
                }
            }
        }
    }
};

以上代码发送到Elasticsearch如下:

POST http://localhost:9200/persons/person/_search?&search_type=count HTTP/1.1
Content-Type: application/json
Host: localhost:9200
Content-Length: 108
Expect: 100-continue

{
    "aggs": {
        "testLastName": {
            "terms": {
                "field": "lastname",
                "size": 5
            },
            "aggs": {
                "tophits": {
                    "top_hits": {
                        "size": 2
                    }
                }
            }
        }
    }
}

可以使用TopHitsMetricAggregationsResult类来访问每个数据桶的命中。 聚合的tophits名称是在搜索请求中配置的名称。

var hits = childbucket.GetSubAggregationsFromJTokenName<TopHitsMetricAggregationsResult<Person>>("tophits");

多桶聚合也可以作为子聚合添加。 这是一个例子,它将一个SignificantTermsBucketAggregation添加到TermsBucketAggregation。 这可以找到所有具有相同名字和姓氏的人物。 SignificantTermsBucketAggregation包含Top Hits子集合。

var search = new Search
{
    Aggs = new List<IAggs>
    {
        new TermsBucketAggregation("testLastName", "lastname")
        {
            Size = 0,
            Aggs = new List<IAggs>
            {
                new SignificantTermsBucketAggregation("testFirstName", "firstname")
                {
                    Size = 20,
                    Aggs = new List<IAggs>
                    {
                        new TopHitsMetricAggregation("tophits")
                        {
                            Size = 20
                        }
                    }
                }
            }
        }
    }
};

请求发送如下:

POST http://localhost:9200/persons/person/_search?&search_type=count HTTP/1.1
Content-Type: application/json
Host: localhost:9200
Content-Length: 188
Expect: 100-continue

{
    "aggs": {
        "testLastName": {
            "terms": {
                "field": "lastname",
                "size": 0
            },
            "aggs": {
                "testFirstName": {
                    "significant_terms": {
                        "field": "firstname",
                        "size": 20
                    },
                    "aggs": {
                        "tophits": {
                            "top_hits": {
                                "size": 20
                            }
                        }
                    }
                }
            }
        }
    }
}

结果可以在控制台应用程序中显示如下:

//允许在控制台中显示聚合结果 
foreach (var bucket in aggResult.Buckets)
{
    var significantTermsBucketAggregationsResult = bucket.GetSubAggregationsFromJTokenName<SignificantTermsBucketAggregationsResult>("testFirstName");

    foreach (var childbucket in significantTermsBucketAggregationsResult.Buckets)
    {
        bool writeHeader = true;
        var hits = childbucket.GetSubAggregationsFromJTokenName<TopHitsMetricAggregationsResult<Person>>("tophits");
        foreach (var hit in hits.Hits.HitsResult)
        {
            if (writeHeader)
            {
                Console.Write("\n{0} {1}, Found Ids: ", hit.Source.FirstName, hit.Source.LastName);
            }
            Console.Write("{0} ", hit.Id);
            writeHeader = false;
        }
    }
}

具有DateRangeBucketAggregation的ExtendedStatsMetricAggregation的示例

此示例显示如何获取整个索引的文档的扩展统计信息,并使用DateRangeBucketAggregation获取专业年份。 DateRangeBucketAggregation包含一个具有一个扩展统计信息多值度量聚合的子聚合。

var search = new Search
{
    Aggs = new List<IAggs>
    {
        new ExtendedStatsMetricAggregation("stats", "modifieddate"),
        new DateRangeBucketAggregation("testRangesBucketAggregation", "modifieddate", "MM-yyy", new List<RangeAggregationParameter<string>>
        {
            new ToRangeAggregationParameter<string>("now-10y/y"),
            new ToFromRangeAggregationParameter<string>("now-8y/y", "now-9y/y"),
            new ToFromRangeAggregationParameter<string>("now-7y/y", "now-8y/y"),
            new ToFromRangeAggregationParameter<string>("now-6y/y", "now-7y/y"),
            new ToFromRangeAggregationParameter<string>("now-5y/y", "now-6y/y"),
            new FromRangeAggregationParameter<string>("now-5y/y")
        })
        {
            Aggs = new List<IAggs>
            {
                new ExtendedStatsMetricAggregation("stats", "modifieddate")
            } 
        }
    }
};

该请求被发送到Elasticsearch:

POST http://localhost:9200/persons/person/_search?&search_type=count HTTP/1.1
Content-Type: application/json
Host: localhost:9200
Content-Length: 405
Expect: 100-continue
Connection: Keep-Alive

{
    "aggs": {
        "stats": {
            "extended_stats": {
                "field": "modifieddate"
            }
        },
        "testRangesBucketAggregation": {
            "date_range": {
                "field": "modifieddate",
                "format": "MM-yyy",
                "ranges": [{
                    "to": "now-10y/y"
                },
                {
                    "to": "now-8y/y",
                    "from": "now-9y/y"
                },
                {
                    "to": "now-7y/y",
                    "from": "now-8y/y"
                },
                {
                    "to": "now-6y/y",
                    "from": "now-7y/y"
                },
                {
                    "to": "now-5y/y",
                    "from": "now-6y/y"
                },
                {
                    "from": "now-5y/y"
                }]
            },
            "aggs": {
                "stats": {
                    "extended_stats": {
                        "field": "modifieddate"
                    }
                }
            }
        }
    }
}

这将返回具有整个索引的一个全局统计信息和一个每个日期范围的结果作为子集合。

HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 2280

{
    "took": 16,
    "timed_out": false,
    "_shards": {
        "total": 5,
        "successful": 5,
        "failed": 0
    },
    "hits": {
        "total": 19972,
        "max_score": 0.0,
        "hits": []
    },
    "aggregations": {
        "stats": {
            "count": 19972,
            "min": 9.643968E11,
            "max": 1.242491613123E12,
            "avg": 1.1821553155683428E12,
            "sum": 2.3610005962530944E16,
            "sum_of_squares": 2.793293745713814E28,
            "variance": 1.1137296180611115E21,
            "std_deviation": 3.3372587823857944E10
        },
        "testRangesBucketAggregation": {
            "buckets": [{
                "key": "*-01-2005",
                "to": 1.1045376E12,
                "to_as_string": "01-2005",
                "doc_count": 527,
                "stats": {
                    "count": 527,
                    "min": 9.643968E11,
                    "max": 1.1043648E12,
                    "avg": 1.0483479256166982E12,
                    "sum": 5.524793568E14,
                    "sum_of_squares": 5.79347110411684E26,
                    "variance": 2.97007142991014E20,
                    "std_deviation": 1.7233895177556755E10
                }
            },
            {
                "key": "01-2006-01-2007",
                "from": 1.1360736E12,
                "from_as_string": "01-2006",
                "to": 1.1676096E12,
                "to_as_string": "01-2007",
                "doc_count": 3071,
                "stats": {
                    "count": 3071,
                    "min": 1.1360736E12,
                    "max": 1.1675232E12,
                    "avg": 1.1524215434711821E12,
                    "sum": 3.53908656E15,
                    "sum_of_squares": 4.0787668666288754E27,
                    "variance": 8.051796664238183E19,
                    "std_deviation": 8.97318040843835E9
                }
            },
            {
                "key": "01-2007-01-2008",
                "from": 1.1676096E12,
                "from_as_string": "01-2007",
                "to": 1.1991456E12,
                "to_as_string": "01-2008",
                "doc_count": 7958,
                "stats": {
                    "count": 7958,
                    "min": 1.1676096E12,
                    "max": 1.1990592E12,
                    "avg": 1.188431685147022E12,
                    "sum": 9.4575393504E15,
                    "sum_of_squares": 1.1240140107520037E28,
                    "variance": 6.291530282695307E19,
                    "std_deviation": 7.931916718357113E9
                }
            },
            {
                "key": "01-2008-01-2009",
                "from": 1.1991456E12,
                "from_as_string": "01-2008",
                "to": 1.230768E12,
                "to_as_string": "01-2009",
                "doc_count": 7101,
                "stats": {
                    "count": 7101,
                    "min": 1.1991456E12,
                    "max": 1.2174624E12,
                    "avg": 1.207894813688213E12,
                    "sum": 8.577261072E15,
                    "sum_of_squares": 1.0360606565306019E28,
                    "variance": 2.49825077336829E19,
                    "std_deviation": 4.9982504672818165E9
                }
            },
            {
                "key": "01-2009-01-2010",
                "from": 1.230768E12,
                "from_as_string": "01-2009",
                "to": 1.262304E12,
                "to_as_string": "01-2010",
                "doc_count": 10,
                "stats": {
                    "count": 10,
                    "min": 1.24249161306E12,
                    "max": 1.242491613123E12,
                    "avg": 1.2424916130944E12,
                    "sum": 1.2424916130944E13,
                    "sum_of_squares": 1.543785408609924E25,
                    "variance": 0.0,
                    "std_deviation": 0.0
                }
            },
            {
                "key": "01-2010-*",
                "from": 1.262304E12,
                "from_as_string": "01-2010",
                "doc_count": 0,
                "stats": {
                    "count": 0,
                    "min": null,
                    "max": null,
                    "avg": null,
                    "sum": null,
                    "sum_of_squares": null,
                    "variance": null,
                    "std_deviation": null
                }
            }]
        }
    }
}

为Elasticsearch中的每个聚合类型提供结果类,因此除非需要,否则不需要创建自己的结果DTO。 任何类都可以用来获取数据。 包含聚合结果的JToken是公开的,如果首选也可以使用。

Elasticsearch快速入门笔记 本篇文章是我学习Elasticsearch的学习笔记,文章比较简单,因为我坚信学一门新技术的最快方式就是先掌握这门技术的增删改查再慢慢深入学习更高级的用法。 简介 Elasticsearch是一个分布式文档存储。Elasticsearch 不是将信息存储为列式数据行,而是存储已序列化为 JSON 文档的复杂数据结构。(以下都称Elasticsearch为es) 把es和mysql对照学习的话,理解起来比较容易 在es中,并没有数据库、数据表和数据行这么概念,取而代之的是: index索引 相当于mysql 阅读详情

相关推荐

Elasticsearch Head的使用

Elasticsearch Head 是一个用于管理和监控 Elasticsearch 集群的 Web 界面工具。它提供了可视化的界面,使用户可以轻松地查看和操作 Elasticsearch 集群中的索引、文档、节点等信息

最难不过坚持,与你共同进步 2397

ElasticsearchRestTemplate 和ElasticsearchRepository 的使用

ElasticsearchRestTemplate 和ElasticSearchClient 的使用

深圳市多克创新科技有限公司 1万+

【异常】ES删除内容时,提示HTTP状态码405 Incorrect HTTP method for uri [//XXX] and method [DELETE], allowed: [POST]

ES删除文档时报错如下。

奶爸的编程之路,也就一周冷个三天 3595

Elastic实战:通过spring data elasticsearch实现索引的CRUD;实现mysql全量/增量同步到ES

0. 引言 elasticsearch官方的java客户端有tranport client,rest high level client,但进行索引的增删改查的操作不够简便。因此我们引入spring data elasticsearch来实现索引的CRUD 1. 版本对应关系 在引入spring data之前要先了解版本之间的对应关系,这个我们可以在spring data 官方文档中查询到 这里我的es用的7.14.0版本,所以需要引入spring data elasticsearch4.3.x版本的依赖

55555的博客 2754

C++和蓝图1:Unreal Engine 中 C++ 与蓝图的桥梁

摘要: 本文介绍了Unreal Engine(UE)中C++与蓝图可视化脚本的结合机制,重点解析了宏系统(UCLASS、UPROPERTY、UFUNCTION)如何实现代码与蓝图的交互。相比Unity的纯C#脚本模式,UE的双轨制开发允许程序员用C++处理核心逻辑,同时通过蓝图让非程序员快速迭代。文章对比了两大引擎的编程范式差异,指出UE的反射系统和宏标记提供了更精细的控制,并给出了从Unity迁移到UE的具体思路。核心在于理解UE的混合编程优势:C++保证性能,蓝图提升开发效率,二者通过宏系统无缝协作。

qq_46348216的博客 1404

LSTM 怎么进行二维数据的输入呢

尽管LSTM并不天然地适用于处理图像、视频等二维数据,但通过时间序列化、卷积特征提取和双向LSTM等方法,我们可以将二维数据转化为适合LSTM输入的形式,从而利用LSTM的强大记忆能力和长期依赖学习能力对二维数据进行建模。未来的研究方向可以考虑将LSTM与其他模型结合,例如将LSTM与卷积神经网络(Convolutional Neural Network, CNN)结合,利用CNN提取图像的空间特征,然后利用LSTM学习时间序列的长期依赖;

xiamu_CDA的博客 1037

干货 | Elasticsearch Nested类型深入详解

0、概要 在Elasticsearch实战场景中,我们或多或少会遇到嵌套文档的组合形式,反映在ES中称为父子文档。 父子文档的实现,至少包含以下两种方式: 1)父子文档 父子文档在5.X版本中通过parent-child父子type实现,即:1个索引对应多个type; 6.X+版本已经不再支持一个索引多个type,6.X+的父子索引的实现改成Join。 2)Nested嵌套类型 本文通过一个例...

铭毅天下Elasticsearch 9万+

CH32V IAP跳转避坑指南:为什么你的APP跳不过去?从mstatus寄存器配置到函数属性详解

本文深入解析CH32V系列MCU的IAP跳转机制,从mstatus寄存器配置到函数属性优化,详细讲解如何避免APP跳转失败。文章涵盖地址准备、模式切换、跳转执行等关键步骤,并提供调试技巧与实战案例,帮助开发者快速解决CH32V IAP跳转中的常见问题。

weixin_30955617的博客 138

ElasticSearch Nested类型全文检索、聚合查询

以上创建索引语句中实现全文检索重点为和,nested类型中哪个text类型的字段需要全文检索,就在字段上加以上可以看到实现nested类型全文检索。

weixin_43207039的博客 2877

SDIO_WiFi驱动学习之安卓WLAN架构介绍及调用流程分析

一、引言 上一篇博客大概介绍了MMC子系统和SDIO相关知识及架构,这一篇博客则大致分析安卓的WLAN架构及上层如何调用WLAN驱动的流程。 虽然我工作的开发环境是安卓系统,但由于我不是专业的安卓应用/框架开发工程师,所以对安卓层的一些代码并不是特别熟悉,只能大致梳理流程,不专业的地方请谅解。 本文部分内容摘抄自网络,若有侵权,请联系删除。 二、安卓WLAN架构 1、应用框架(Application framework) 在应用程序框架级别是应用程序代码,它使用各种android.net..

陈子陌的博客 5087

SKILL 是什么?怎么做?五分钟 带你从入门到精通

skill-creator 是 Anthropic 官方开源的“元技能”——一个专门用来创建 Skill 的 Skill。你只需要用自然语言描述想要什么功能,它会自动生成。从更宏观的视角看,Skills 的出现标志着 AI 编程的一次范式转变。在传统的 AI 编程中,代码是确定性的:1 是 1,2 是 2。但到了大模型时代,代码变得不确定——你不知道模型会输出什么,不知道它会不会突然删掉几行代码。这种不确定性让很多开发者感到不安。Skills 把这套逻辑又拉了回来。

十年老程序猿,AI 疯狂研究专家,前沿硬核知识分享 640

elastic:nested实现对满足条件的数组元素聚合查询

某些业务场景下,我们要对数组元素进行聚合查询,就需要用到nested数据类型,但部分场景是针对数组中指定的元素进行聚合,于是就需要对数组元素进行限定,今天来看看这种场景如何实现。

55555的博客 1754

Python 爬虫实战:就业市场趋势数据抓取与行业洞察

在当今竞争激烈的就业市场中,了解行业趋势和就业形势对于求职者、学生以及人力资源专业人士来说至关重要。通过获取和分析就业市场数据,我们可以深入了解不同行业的招聘需求、薪资水平、技能要求等关键信息,从而为职业规划和人才发展提供有力支持。

yansideyucsdn的博客 1406

ElasticSearch nested类型求聚合

文章目录nested类型聚合: 正则查询 POST bdp_dev_profile_user_basic_label/_search { "query": { "regexp":{ "office_company.keyword": ".*,dy,.*" } } } PUT my_example/_doc/1 { "content":"This is a good network" } POST my_example/_search { "query":

ChengYanan的博客 1606

钉钉多维表格开发

从0到1完成钉钉多维表格开发SDK对接与实践案例。

沉修所长,勇逐新机;安而不怠,静而思变 3593

【推荐100个unity插件】将UE的资源导出到unity使用—— Exporter for Unreal to/for Unity插件

Unreal to Unity导出器是一款帮助开发者将Unreal Engine项目转换为Unity的工具。文章详细介绍了使用步骤:1)安装虚幻引擎并创建项目;2)在Plugins文件夹中安装导出插件;3)导入UE资产到Content文件夹;4)配置导出参数并完成转换。文末推荐了多个Unity开发专栏,涵盖C#编程、2D/3D开发、特效制作等内容。作者向宇提供了博客地址,欢迎读者交流学习。该工具能有效提升项目迁移效率,适合需要跨引擎开发的用户使用。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 844

springboot 集成Elasticsearch使用ElasticSearchRepository进行增删改查操作

1.引入elasticsearch相关的依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> <version>2....

qq_16436555的博客 1万+

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

Elasticsearch入门CRUD(新增、查询、修改、删除)

IT交流互助QQ群:79190545    (Sql Server / Java / Asp.Net / C# / JS / Jquery / Oracle / My Sql / )            -- 欢迎大家进来 聊天,交流 !!。(定期清理 不说话、潜水太深的同学) 1. 项目中引用 Elasticsearch.Net         Elasticsearch 其他版本可

邓杨喜 的专栏 6289

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

ElasticSearch笔记

查询: 宽泛的概念!只要将某个东西查询出来! 搜索: 一种特定的查询! 搜索一般指 通过某个关键字,检索出和关键字相关的信息!搜索引擎,不适合使用关系型数据库存储数据!原因: ①在搜索时,只输入关键字,希望可以得到匹配关键字的所有的数据!如果使用数据库,在查询时一定需要模糊查询,模糊查询会导致索引失效,全表扫描!效率低! 2.几个框架 solr : 和es的作用是一样的,都是用于搜索! 效率上: solr(老大哥): 小数据量,静态搜索,优于es! es(新人) : 大数量,动态搜索,优于s

m0_52210776的博客 463

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

elasticsearch header常用操作

1、RESTful接口使用...

qq_21304127的博客 3740

Spring Data Elasticsearch篇(3):ElasticsearchRepository文档操作

1、ElasticsearchRepository 1.1、ElasticsearchRepository源码 @NoRepositoryBean public interface ElasticsearchRepository&lt;T, ID extends Serializable&gt; extends ElasticsearchCrudRepository&lt;T, ID&g...

u013089490的博客 2万+

ElasticSearch(六)Spring-data-elasticsearch 注解说明及Repository使用说明

一、实体类索引注解说明: @Document(indexName = "user_db", type = "user_table") public class User{ @Id @Field(type = FieldType.Keyword) private String userId; @Field(type= FieldType.Keyword) p...

zheng45的博客 1万+

ElasticSearch(ES)使用Nested结构存储KV及聚合查询

自建博客地址:https://www.bytelife.net,欢迎访问! 本文为博客同步发表文章,为了更好的阅读体验,建议您移步至我的博客???? 本文作者: Jeffrey 本文链接: https://www.bytelife.net/articles/51440.html 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处! 本文将讨论如何在ElasticSearch中使用nested结构进行数据的存储、查询和聚合,并结合K-V场景讨论ElasticSear

Jeffrey的博客 2073

Elasticsearch 8 启动成功后,无法直接通过 http://localhost:9200 访问

解决ES8无法正常访问的问题

cw2467407676的博客 4728

ElasticSearch 实战:嵌套字段的聚合操作

在Elasticsearch中,如果您的文档结构包含嵌套对象(nested fields),直接对这些嵌套字段进行聚合可能会得到不准确的结果,因为Elasticsearch默认会扁平化处理嵌套对象。要正确地对嵌套字段进行聚合操作,您需要使用Elasticsearch提供的。查询结果将展示每个客户的ID,以及他们购买的每个产品的总销售额。是一个嵌套类型的字段,因为它包含了多个具有相同结构的子对象。聚合来处理嵌套字段,并在嵌套上下文中执行所需的度量聚合(如。分组,然后计算每个客户购买的每个产品的总销售额。

qq_33240556的博客 873

一起学Elasticsearch系列-聚合查询

聚合查询是 Elasticsearch 中一种强大的数据分析工具,用于从索引中提取和计算有关数据的统计信息。聚合查询可以执行各种聚合操作,如计数、求和、平均值、最小值、最大值、分组等,以便进行数据汇总和分析

BookSea的博客 1777
上一篇: ElasticsearchCRUD使用(十五)【批量插入数据】
下一篇: ElasticsearchCRUD使用(十七)【Elasticsearch搜索多个指标和类型】
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值