贫瘠之地

华北无浪漫,死海扬起帆
多少个夜晚,独自望着天

0%

基数聚合

基数聚合属于聚合中的度量聚合,计算不同值的近似计数

需要注意,聚合出的结果是一个近似值,原因是底层结构使用的 HyperLogLog,具有一定误差

基本操作

假定 index 存储的售卖数据,希望查询有多少种不同的商品类型

阅读全文 »

背景

折叠和聚合

日常会有很多场景希望将平面数据按照一定的条件组合起来,并按照一定规则进行计算

聚合将您的数据汇总为指标、统计或其他分析

可以帮助你回答类似如下问题:

阅读全文 »

from size

from size 是最常见的分页方式,类比 MySQL 的 offset limit

由于 ES 是天然分布式的,数据分散在各个 shards 上,所以需要查询 from + size 的条数时,coordinate node 就向该 index 的其余的 shards 发送同样的请求,等汇总到 (shards × (from + size)) 条数时在 coordinate node 再进行一次排序,最终抽取出真正 from 后的 size 条结果

显而易见,当 shards 较多、分页深度很大时,这种方式存在很大的性能问题,这也是 ES 默认深度为 from + size <= 10000 的原因

Routing 机制

阅读全文 »

六大原则

设计原则 概述 目的
开闭原则 对扩展开放,对修改关闭 易于维护
单一职责 一个类只干一件事,实现类要单一 提升可读性
里氏替换 不要重写父类的方法 健壮性、防止错误继承
迪米特法则 最少知道,对象之间少建立联系 低耦合
接口隔离 一个接口只干一件事,接口要精简单一 高内聚
依赖倒置 高层不应该依赖低层,要面向接口编程 利于结构升级

开闭原则

Software entities like classes,modules and functions should be open for extension but closed for modifications.

一个软件实体如类,模块和函数应该对扩展开放,对修改关闭

随着业务发展需要增加新的方法,有几种方式:

阅读全文 »