介绍
elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口,百度是这么告诉我的。里面出现的Lucene也是一个用于搜索的引擎,但是elasticsearch对其做了封装,提供了更友好的api,并且可扩展性非常好,而且安装简单。
太多的概念我就不说了,网上一大堆,下面来看看怎么安装。
安装
安装的话可以使用docker,但是这里我们还是采用下载tar包的方式。我的安装目录为/opt/elasticsearch
,记得顺便安装一下jdk。
首先进入官网下载,https://www.elastic.co/cn/downloads/elasticsearch
,最新版本是7.5.2,直接点击下载即可,但我这里使用的不是最新版,而是5.6.16版本的,具体使用哪个版本由你自己决定。
丢进去解压即可,最后目录长这个样子。启动文件在bin目录里面,为了执行方便,可以加到环境变量里面。
所有大数据组件目录基本上都差不多,目录的含义应该不用我介绍了。
不过我们需要改一个配置文件,因为es有一个特点就是不能以root来启动,因为es要访问大量的文件、并且可以接收用户的脚本来执行,因此为了安全不允许使用root用户启动,最好的办法是创建一个普通用户,然后把相关目录的操作权限赋给这个新用户。
useradd xxx
passwd xxx
chown -R xxx:xxx elasticsearch目录
然后修改配置文件,只需要改一个即可。至于端口,默认有两个端口9200和9300,当然也是可以改的,我们这里就不改了。
# 在config里面有一个elasticsearch.yml,这就是我们修改的配置文件
# 但是里面全部被注释掉了,所以我们就不把注释打开了,直接在文件尾部添加即可
network.host: 0.0.0.0 # 为了能够让其他机器通过web访问
# 至于其他的参数可以参考这个配置文件
我们使用新创建的用户启动,如果直接启动还是会报出错误。
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [65535] for elasticsearch process is too low, increase to at least [65536]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
意思就是用户可以配置的文件数量太少、可使用的最大虚拟内存太小,我们还需要改一下。
vim /etc/security/limits.conf
vim /etc/sysctl.conf
然后执行sysctl -p即可
此时以普通用户satori启动就成功了,我们来通过web页面查看一下,端口是9200
如果能够出现如下内容,说明安装成功。所以es的安装还是比较简单的,我们总结一下流程。
安装jdk
安装es包,解压
修改配置文件,将network.host: 192.168.0.1改成network.host: 0.0.0.0,这样其它机器才可以访问
但是es对可打开的文件数量和可使用的虚拟内存有要求,所以我们需要再改两个系统的配置文件
最后创建一个新用户,或者已有的也行,总之不能是root。因为root的权限太高,es要操作大量文件的时候不能有太高的权限,更何况它还可以执行用户自己编写的脚本。总之就是以一个不是root的用户启动就行。
es相关概念
es是基于Lucene开发的分布式全文检索框架,存入es中的数据、和从es中查询得到的数据都是json格式的。首先在es中有几个概念我们必须要知道:
索引:Index,相当于数据库的database
类型:Type,相当于数据库的table
主键:id,相当于数据库的主键
因此我们往es中存储和查询数据,其实就是往es的Index下的Type中存储和查询。
es支持restful风格api,至于什么restful可以网上搜索一下,这是一套工业标准。总之我们可以使用http的方式来对数据进行增删改查
查询数据:http的get请求
插入数据:http的put/post请求
修改数据:http的put/post请求
删除数据:http的delete请求