ES概述
es全称Elasticsearch,开发界简称es,中文名字叫全文搜索引擎。
它的优点是可以从大量数据中根据指定的关键字快速的匹配出相关的内容。使用es是为了提高查询的效率,所以es提供了相应的控制器方法供我们调用。es也有数据库的功能,我们搜索的数据也会进行相应的存储,而存储是放在硬盘上的,他的核心搜索功能来自于Java的一个叫Lucene的API,es在Lucene的基础上开发出了一个功能全面的开箱即用的全文搜索引擎。
和es具有相同功能的软件还有Solr和MongoDB。
我们目前所使用的数据库,如mysql,mariaDB,oracle等,都是关系型数据库。
而关系型数据库都有一个致命缺点:前模糊的模糊查询不能使用索引。这就麻烦了,如果百万乃至千万级的数据搜索一条前模糊数据,等个10s,20s的,那谁能受的了?就说淘宝京东之流,我们搜索数据在网络没问题的情况下,从来没超过3s吧?甚至有的1s内就出来了,这就是es的能力,使用它优化后的相同查询,效率能提高100倍。
理解es的查询机制:在使用查询时,如果不使用es,选择数据库查询,若是有索引的加持,还好,但若是没有索引,或者查询的内容是开头的部分,那数据库就有些无能为力了,只能使用低效的全表查询,性能非常差。使用es,它可以利用添加数据库完成数据的分词倒排索引,形成一个庞大的索引库,在查询时,通过索引库就可以得到符合条件的数据,我们可以认为es是一本书,索引库就是页码,这样就大大缩小了查询的范围。
ES安装
多节点集群模式、环境依赖JAVA。rpm包进行对应安装。
es默认监听端口是9200、9300
9200:接受请求,http.port
9300:参与集群事务,transport.tcp.port
两个节点机器关闭了防火墙,互配了hosts。
ES+kibana
在使用Kibana时,需要注意Kibana的版本号必须和ES的版本相互对应,不然会出现Kibana和ES不兼容的问题,导致Kibana安装后不能使用。
具体的版本对应问题,可以参考官网:elasticsearch和Kibana版本关系
kibana可方便操作ES,没有kibana,就需要使用postman或者curl操作ES。
使用postman操作ES
ES开启了用户名、密码登录,使用postman时需要加上basicAuth。即
![](https://i-blog.csdnimg.cn/blog_migrate/dc59dbab62f3b33ca7883b47d01f4804.png)
新建索引
![](https://i-blog.csdnimg.cn/blog_migrate/9a2f59dcad3c82db17dc40c846ed3b37.png)
查询具体索引
![](https://i-blog.csdnimg.cn/blog_migrate/7206397a646a35027f33bbcd079510a7.png)
查询所有的索引
![](https://i-blog.csdnimg.cn/blog_migrate/43458aa0fa2b4fba322a6429f39bfa41.png)
删除索引,指定具体的索引名称
![](https://i-blog.csdnimg.cn/blog_migrate/7c2c3a1e6a26ea2a12a448f920e5f703.png)
修改mapping
![](https://i-blog.csdnimg.cn/blog_migrate/cfc08c2fa29ddb98e80bb32858802973.png)
插入数据
![](https://i-blog.csdnimg.cn/blog_migrate/27b49901dc8249610d6c608591045df8.png)
创建文档
索引创建好了之后,我们接下来需要创建文档,文档可以看成MySQL中的行,用于存储数据(ES在7版本之后,没有表的概念)
![](https://i-blog.csdnimg.cn/blog_migrate/f96fb45b2584b2783eb1ea458a7b4d40.png)
创建文档时带上ID
![](https://i-blog.csdnimg.cn/blog_migrate/361749058f70dcb9533a6b997882509c.png)
全查询
能查出来详细数据
![](https://i-blog.csdnimg.cn/blog_migrate/749d9ddea2dc2e56f53e853c87ee4d50.png)
根据主键ID查询
![](https://i-blog.csdnimg.cn/blog_migrate/1f25d739fb6d5585c83fc38c3ba5e39e.png)