本周阶段性的收获颇丰,我满意了


台风利奇马,呼啸着从魔都上方咆哮而过。似乎有点应景【上海堡垒】这部电影。魔都的风,在8月是肆虐的,似乎每年我总有一两把伞,是在这个时间点被无情的卷走或者破坏。搞得我不得不像 DBA 防灾一样,办公室,家里各放一把,以便切换。


胖哥今早在他的朋友圈讨经验,说,如何才能把魔都这股台风,拍出凌烈之势,把雨拍的更加惊鸿一些,怎么也要对得起这场台风啊。我给他的方法是,自己去雨里风里站着,让媳妇儿帮他拍个定妆照,瞧把你嘚瑟的~~


6点起床,把公司的项目发布到了生产,一番测试下来,顺顺当当,苦战了2个月,今天终于无Bug发布,心情自是激动不已。要知道这些都是投行的大客户亲自操盘的系统,华尔街的大佬们,老爷们还在呼呼大睡的时候,我们已经开始辛勤工作啦。


自制了一杯拿铁,对于我这样的咖啡筒子,每天一杯实在平常无奇,稍微平复了下心情,我要总结下这段时间来,个人的一些付出与收获。


首先,一项技能, 全文检索。


我在上月也提到了 ElasticSearch 这款开源软件。详情可看这文:


强烈推荐一门SQL之外我还在修炼的技艺


如果是 Java 系的同学,可能很早就知道这款软件的前身了,那就是 lucene. 当年读了一些 Java 的主题编程,其中 Java 8 就涉及到了 lucene 应用,全文检索开源工具。


当我们工作了多年之后,会有很多自己积累的脚本,自制小程序,文章等等。常用的这些脚本,小程序等我们可以用文件夹的形式,放在桌面上随手可得,或者骚气一点,你可以放在 Mac 里,连文件夹都不要建,使用 spotlights 秒搜你想要的文件或者程序。但前提是你必须记得一两个关键字。


640?wx_fmt=gif


趁着工作的需要,我把 ElasticSearch 好好的学了一遍,也做了一些笔记,从0到1地玩起来了。整理了一个 xmind,把相关的例子都敲在里面,以后如果忘记了,可以拿出来参考。我认为 ElasticSearch 也可以归类为数据仓库的应用中去,所以后续会在星球继续输出一些详细的文章,这里就不展开了。



640?wx_fmt=gif



不得不说,xmind确实是一款优秀的脑力劳动辅助工具,往往一个瞬间的思想都可以通过它帮助记录,随后往往会有更多的脑力被激活。


简单的来分享下 ElasticSearch 中几大主题,掌握了这几大主题,一般的全文索引应用就可以实现了。


640?wx_fmt=jpeg


跟 RDBMS(关系型数据库)一样,开始我们要设置一个 schema来规定数据的组织,虽说 schema 也可以不设置,但不设置的后果便是之后的索引查询会出现各种诡异的结果。有规矩,成方圆。古人诚不欺我也。


这里的 schema 就是数据结构,包括数据节点,数据类型以及数据关系。当我们定义好 schema 之后就是丢给 ElasticSearch 去做索引了,至于反向索引怎么实现,可以参考 Lucene 原理,大概的过程就是分词,记录文档指针,保存。


如果你的团队有专门的 ES 运维,这些都不用你去考虑。你专心要做的事情,是学好 ElasticSearch 的全文检索语法,这就跟 SQL 与数据库的关系一样,你会 SQL 就能玩转 CRUD, 至于数据库怎么运维,可以交给 DBA.


640?wx_fmt=jpeg


上图是针对 schema 如何做设计的一个草图,在设计 schema的时候,有难点的地方是如何设计分析器,包括分词器以及过滤器。


当 schema 设计好了,接下来的事情,只剩下 CRUD 了,以下四张图,包含了所有输入以及输出数据要用到的语法。学完也就能用 ES了。


640?wx_fmt=jpeg


640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg



举一个例子,完整的涵盖了搜索到聚合的过程:


 
 
POST comment_gap/_search	
{	
  "size":0,	
  "query":{	
      "term":{"AccountName":"abc"}	
      },	
  "aggs":{	
      "count_over_time":{	
        "date_histogram":{	
            "field":"CREATED",	
            "interval":"month",	
            "order":{"actionitemsum":"desc"}	
        },	
        "aggs":{	
            "actionitemsum":{	
              "sum":{	
                "field":"ActionItemId"	
              }	
            },	
            "bucket_truncate":{	
              "bucket_sort":{	
                "from":0,	
                "size":2	
              }	
            }	
        }	
    },	
    "sum_monthly_actionitems":{	
        "sum_bucket":{	
          "buckets_path":"count_over_time>actionitemsum"	
        }	
    }	
  }	
}	
	
	
1. 按照月份,进行分桶统计:月总数,月累加数	
2. 按照月累计数倒序排序,并且前 2 个文档	
3. 计算前两个文档的月累加数的总数	
4. date_histogram 是分桶统计的一种算法,并可同时指定按月累计的其他度量:"aggs":{"actionitemsum":{"sum":{}}} 便是	
5. bucket_truncate 是取 top N 个文档,并可作用于 bucket aggregation 结果集



这是本月技能上的一项竣工,当然一篇文章讲清楚 ElasticSearch 怎么用,是不现实的,后续专题文章会陆续输出。主要参考书目这里可以提一下:



640?wx_fmt=jpeg


我的读书习惯是尽量找不同主题或者深度的一系列书来看,挑着看,跳着看都行,因为我想知道的,我能找到问题本质的知识点,我都最终会转化成为文字,图片,脑图存起来,消化。



第二件事:微信小程序



前段时间邀请大家来做题,类似【SQL中考题】,【SQL高考题】都很有趣。通过做题大家更有紧迫感,比看文效果更好。但试题小程序有限制,人数超过50人就需要收费了,所以干脆自己开发了个小程序,专门用来出题,答题。


界面是这样的,大家先来围观吧


640?wx_fmt=jpeg


现在小程序提交微信审核了,如果能过,这两天应该就可以和大家见面了。欢迎大家提建议!



640

猜你喜欢:


强烈推荐一门SQL之外我还在修炼的技艺

本号精华合集



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

dbLenis

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值