从诗词大会飞花令到elasticsearch原理解析

2019 年 4 月 25 日 大数据技术

来自:互联网侦察




随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。


但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。


【倒排索引】


吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。

【索引量爆炸】


【搜索引擎原理】


【elasticsearch简介】


吕老师:但是lucene还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于lucene进行封装,写出了elasticsearch

【elasticsearch基本概念】


吕老师:类型是用来定义数据结构的,你可以认为是mysql中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录。

吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫poems的索引,然后创建一个名叫poem的类型,类型是通过mapping来定义每个字段的类型,比如诗题、作者、朝代都是keyword类型,诗内容是text类型,而字数是integer类型,最后就是把数据组织成json格式存放进去了。

吕老师:这个问题问得好,这涉及到分词的问题,keyword类型是不会分词的,直接根据字符串内容建立反向索引,text类型在存入elasticsearch的时候,会先分词,然后根据分词后的内容建立反向索引。

吕老师:之前我们说过,elasticsearch把操作都封装成了httpapi,我们只要给elasticsearch发送http请求就行。比如使用curl -XPUT 'http://ip:port/poems',就能建立一个名为poems的索引,其他操作也是类似的。

【elasticsearch分布式原理】


吕老师:没错,elasticsearch也是会对数据进行切分,同时每一个分片会保存多个副本,其原因和hdfs是一样的,都是为了保证分布式环境下的高可用。

吕老师:没错,在elasticsearch中,节点是对等的,节点间会通过自己的一些规则选取集群的mastermaster会负责集群状态信息的改变,并同步给其他节点。

吕老师:注意,只有建立索引和类型需要经过master,数据的写入有一个简单的routing规则,可以route到集群中的任意节点,所以数据写入压力是分散在整个集群的。

【elk系统】


吕老师:其实很多公司都用elasticsearch搭建elk系统,也就是日志分析系统。其中e就是elasticsearchllogstash,是一个日志收集系统,kkibana,是一个数据可视化平台。

吕老师:分析日志的用处可大了,你想,假如一个分布式系统有1000台机器,系统出现故障时,我要看下日志,还得一台一台登录上去查看,是不是非常麻烦?

吕老师:但是如果日志接入了elk系统就不一样。比如系统运行过程中,突然出现了异常,在日志中就能及时反馈,日志进入elk系统中,我们直接在kibana就能看到日志情况。如果再接入一些实时计算模块,还能做实时报警功能。

【笔记】


小史学完了elasticsearch,在笔记本上写下了如下记录:

1、反向索引又叫倒排索引,是根据文章内容中的关键字建立索引

2、搜索引擎原理就是建立反向索引

3elasticsearchlucene的基础上进行封装,实现了分布式搜索引擎

4elasticsearch中的索引、类型和文档的概念比较重要,类似于mysql中的数据库、表和行

5elasticsearch也是master-slave架构,也实现了数据的分片和备份

6elasticsearch一个典型应用就是elk日志分析系统


写完,又高高兴兴背诗去了。


观书有感

朱熹

半亩方塘一鉴开,天光云影共徘徊。

问渠那得清如许?为有源头活水来。



●编号805,输入编号直达本文

●输入m获取文章目录


推荐↓↓↓

程序员数学之美

更多推荐25个技术类公众微信

涵盖:程序人生、算法与数据结构、黑客技术与网络安全、大数据技术、前端开发、Java、Python、Web开发、安卓开发、iOS开发、C/C++、.NET、Linux、数据库、运维等。

登录查看更多
1

相关内容

ElasticSearch是一个基于Lucene的分布式实时搜索引擎解决方案。属于Elastic Stack的一部分,同时另有 logstash, kibana, beats等开源项目。
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
113+阅读 · 2020年5月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
166+阅读 · 2020年3月27日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
滴滴离线索引快速构建FastIndex架构实践
InfoQ
21+阅读 · 2020年3月19日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
面试题:Word2Vec中为什么使用负采样?
七月在线实验室
46+阅读 · 2019年5月16日
亿级订单数据的访问与储存,怎么实现与优化
ImportNew
11+阅读 · 2019年4月22日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
Arxiv
5+阅读 · 2020年3月26日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Efficiently Embedding Dynamic Knowledge Graphs
Arxiv
14+阅读 · 2019年10月15日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
5+阅读 · 2018年5月1日
VIP会员
相关VIP内容
【2020新书】使用高级C# 提升你的编程技能,412页pdf
专知会员服务
57+阅读 · 2020年6月26日
【干货书】现代数据平台架构,636页pdf
专知会员服务
253+阅读 · 2020年6月15日
Python地理数据处理,362页pdf,Geoprocessing with Python
专知会员服务
113+阅读 · 2020年5月24日
【实用书】Python爬虫Web抓取数据,第二版,306页pdf
专知会员服务
117+阅读 · 2020年5月10日
【经典书】数据结构与算法C++,第二版,738页pdf
专知会员服务
166+阅读 · 2020年3月27日
【干货】大数据入门指南:Hadoop、Hive、Spark、 Storm等
专知会员服务
95+阅读 · 2019年12月4日
【电子书】C++ Primer Plus 第6版,附PDF
专知会员服务
87+阅读 · 2019年11月25日
相关资讯
滴滴离线索引快速构建FastIndex架构实践
InfoQ
21+阅读 · 2020年3月19日
携程用ClickHouse轻松玩转每天十亿级数据更新
DBAplus社群
11+阅读 · 2019年8月6日
面试题:Word2Vec中为什么使用负采样?
七月在线实验室
46+阅读 · 2019年5月16日
亿级订单数据的访问与储存,怎么实现与优化
ImportNew
11+阅读 · 2019年4月22日
亿级订单数据的访问与存储,怎么实现与优化?
码农翻身
16+阅读 · 2019年4月17日
使用 Canal 实现数据异构
性能与架构
20+阅读 · 2019年3月4日
为什么分布式一定要有消息队列?
互联网架构师
4+阅读 · 2018年7月5日
基于大数据搭建社交好友推荐系统
云栖社区
8+阅读 · 2018年2月2日
自然语言处理(4)之中文文本挖掘流程详解(小白入门必读)
机器学习算法与Python学习
5+阅读 · 2017年12月22日
如何七周成为数据分析师
R语言中文社区
4+阅读 · 2017年7月19日
相关论文
Arxiv
5+阅读 · 2020年3月26日
Meta-Learning to Cluster
Arxiv
17+阅读 · 2019年10月30日
Efficiently Embedding Dynamic Knowledge Graphs
Arxiv
14+阅读 · 2019年10月15日
A Sketch-Based System for Semantic Parsing
Arxiv
4+阅读 · 2019年9月12日
Neural Approaches to Conversational AI
Arxiv
8+阅读 · 2018年12月13日
Arxiv
5+阅读 · 2018年5月5日
Arxiv
5+阅读 · 2018年5月1日
Top
微信扫码咨询专知VIP会员