对于 es 的理解
原理
首先 es 是一个分布式的搜索引擎数据库,其基本结构和 mysql 有一定的相似度,它的 index 类似于mysql的表,schema类似于mysql 的表结构,document 类似于 mysql 的一行数据,field 类似于mysql的某个字段。但是,在存储模式上,却与mysql有很大的区别,mysql采用的正向索引,添加完数据后,根据主键值建立索引,而es不同,它建立的是倒排索引。
什么是倒排索引呢,主要是将某个字段进行拆分,比如“你好,世界”,它可能会拆分成2份或3份,然后为拆分后的结构搭建索引,比如”你好“这个字段,它就在它的映射容器内加入了先前的那个”你好,世界“这条记录,因此我们只需要查询”你好“,就能够搜索到”你好,世界“这条数据,就有点向搜索引擎。
简述一下es的操作方式
es是单独的一个数据库,我们呢可以使用kibana的控制台来进行方便的操作。es支持restful风格的api,我们就像发送网络请求那样,使用 GET POST PUT 等方式向es发送请求,比如创建index,查询某条数据,修改某条数据等。它的字段包括tex password boolean number keyword,其中需要注意的是,被 keyword 修饰的字段在进行倒排索引建立时,并不会将其拆分成简单字段,而是将整个字段一起作为一个索引标识来索引,比如常见的电话、邮箱等,都可以用这种方法来限制。
es是非常高效的,但它就并不能像mysql那样有ACID一套事务操作,数据可靠性的支持上远远不如mysql。但是es有它自己的应用场景,比如日志分析,大量数据的搜索引擎,都可以用到es,es在处理这方面的能力上是非常突出的。
关于日志系统,有一个非常出名的框架,叫做elk,即elasticsearch+kibana+logstash,即数据库+可视化界面+数据收集器,我们在项目中引入logstash依赖后,就相当于在本地搭建了一个服务器,它能够定时将项目产生的日志文件发送给es,es又会对这些数据进行索引的建立,最终交给kibana进行优美的展示。