小石是一名非研究生程序员。虽然他是电子专业的,但通过自己的努力顺利通过了面试,现在即将开始新的生活。随着央视诗歌大会的热播,小石开始对诗歌产生了兴趣,最喜欢的部分就是飞花铃。只是,萧石已经很久没有背诗了,孙飞一个字都说不出来,以前熟悉的很多诗他也想不起来了。倒排索引卢老师:可是我让你给诗起个“前”字。由于没有索引,只能遍历脑海中所有的诗词。当你脑子里有很多诗的时候,很难得到里面的结果。爆破索引搜索引擎原理Elasticsearch介绍卢老师:但是Lucene还是一个库,对搜索引擎原理稍有了解的人就可以很好的使用,所以后来有人基于Lucene封装了写Elasticsearch。Elasticsearch基本概念卢老师:类型是用来定义数据结构的,你可以把它想象成MySQL中的一张表。文档就是最终的数据,你可以把文档看成是一条记录。卢老师:比如一首诗,有题名、作者、朝代、字数、诗内容等字段。首先,我们可以创建一个名为Poems的索引,然后创建一个名为Poem的类型。类型映射是通过Mapping定义各个字段的类型。比如一首诗的标题、作者、朝代都是Keyword类型,诗的内容是Text类型,字数是Integer类型。最后将数据组织成Json格式存储。卢先生:这是一个很好的问题。涉及到分词。Keyword类型不会分词,直接根据字符串内容建立反向索引。Elasticsearch中存储Text类型时,会先进行分词,然后对word后面的内容创建倒排索引。卢老师:我们之前说过,Elasticsearch将操作封装成HTTPAPI,我们只需要向Elasticsearch发送HTTP请求即可。例如使用curl-XPUT'http://ip:port/poems'创建一个名为Poems的索引,其他操作类似。Elasticsearch的分布式原理陆老师:是的,Elasticsearch也会对数据进行分片,每个shard会保存多份。道理和HDFS一样,都是为了保证分布式环境下的高可用。卢老师:对,在Elasticsearch中,节点是平等的,节点会通过自己的一些规则来选出集群的master。master会负责集群状态信息的变化,并同步到其他节点。卢先生:注意只有索引和类型的建立需要经过master。数据写入有一个简单的路由规则,可以路由到集群中的任意一个节点,因此数据写入的压力分散在整个集群中。ELK系统卢老师:其实很多公司都是用Elasticsearch来搭建ELK系统,也就是日志分析系统。其中E是Elasticsearch,L是日志收集系统Logstash,K是数据可视化平台Kibana。卢老师:分析日志很有用。想一想,如果一个分布式系统有1000台机器,当系统出现故障时,我必须要查看日志,一台一台地登录查看。是不是很麻烦?卢老师:但是如果日志接入ELK系统就不一样了。比如系统在运行过程中,如果突然出现异常,可以在日志中及时反馈。日志进入ELK系统,我们可以直接在Kibana中看到日志情况。如果接入一些实时计算模块,还可以实现实时报警功能。小结在学习了Elasticsearch的历史之后,我在笔记本上写下了如下记录:逆向索引,也称倒排索引,是根据文章内容中的关键词。搜索引擎的原理是建立倒排索引。Elasticsearch是在Lucene的基础上进行封装,实现分布式搜索引擎。Elasticsearch中的索引、类型和文档的概念很重要,类似于MySQL中的数据库、表和行。Elasticsearch也是Master-slave架构,同样实现了数据分片和备份。Elasticsearch的一个典型应用就是ELK日志分析系统。写完了,我又兴高采烈地背诗了。观书之感(朱熹)半亩见方池开,天云影萦。问他有多清楚?为活水之源。
