摘要:
1、背景 此篇文档简单的记录一下在es使用bucket script来进行聚合的一个例子。 2、需求 假设我们有一个简单的卖车数据,记录每个月month在卖了brand品牌的车salesVolume的数量。 此处我们需要聚合出 每个月brand=宝马的车在每个月的销售占比 3、准备数据 3.1 ma 阅读全文
摘要:
1、背景 在我们使用es的开发过程中可能会遇到这么一种情况,比如我们的线路名称字段lineName字段在设置mapping的时候使用的是text类型,但是后期发现需要使用这个字段来进行聚合操作,那么我们除了对索引进行reindex操作外,还有什么办法可以解决这个问题呢?此处我们通过runtime f 阅读全文
摘要:
#1、背景 在我们使用es时,有些时候需要动态返回一些字段,而这些字段是通过动态计算得出的,那么此时该如何操作呢? 比如:我们索引中有一个sex字段,保存的是1或0,而在页面上需要展示男或女,那么这个时候就可以使用script_fields来解决。可能有些人说,我通过后台进行格式化一下不就行了吗,但 阅读全文
摘要:
1、背景 在我们向es中写入数据时,有些时候数据写入到es中的是null,或者没有写入这个字段,那么这个时候在es中该如何查询出这种为null的数据呢? 2、需求 假设我们的mapping存在 如下2个字段name和address,其中 name是keyword类型且使用了null_value来处理 阅读全文
摘要:
1、背景 一般情况下,有些搜索需求是需要根据拼音和中文来搜索的,那么在elasticsearch中是如何来实现基于拼音来搜索的呢?可以通过elasticsearch-analysis-pinyin分析器来实现。 2、安装拼音分词器 # 进入 es 的插件目录 cd /usr/local/es/ela 阅读全文
摘要:
1、背景 我有一堆学生数据,其中湖北省的学生需要排在所有数据的最前面。其余省正序排序,对于同一个省的数据,按照年龄倒序排序。 2、分析 对于上方的排序需求,湖北省的学生数据需要排在前端,但是湖北省并不是一个字段,那么这个时候改如何实现呢?对于这种场景我们很容易就想到需要脚本script sort来实 阅读全文
摘要:
1、背景 此篇文章简单的记录一下 elasticsearch的metric聚合操作。比如求 平均值、最大值、最小值、求和、总计、去重总计等。 2、准备数据 2.1 准备mapping PUT /index_person { "settings": { "number_of_shards": 1 }, 阅读全文
摘要:
1. 背景 此处将单记录一下 global 、 filters和cardinality的聚合操作。 2、解释 1、global global聚合是全局聚合,是对所有的文档进行聚合,而不受查询条件的限制。 global 聚合器只能作为顶级聚合器,因为将一个 global 聚合器嵌入另一个桶聚合器是没有 阅读全文
摘要:
1、背景 此处来简单学习一下 elasticsearch 的 date_histogram直方图聚合。它和普通的直方图histogram聚合差不多,但是date_histogram只可于 日期或日期范围 类型的值一起使用。 2、bucket_key如何计算 假设我们存在如下时间 2022-11-29 阅读全文
摘要:
1. 简介 直方图聚合是一种基于多桶值聚合,可从文档中提取的数值或数值范围值来进行聚合。它可以对参与聚合的值来动态的生成固定大小的桶。 2. bucket_key如何计算 假设我们有一个值是32,并且桶的大小是5,那么32四舍五入后变成30,因此文档将落入与键30关联的存储桶中。下面的算式可以精确的 阅读全文