前言
此文讨论一个 全文搜索引擎 的解决方案,ES是基于RESTful web接口。当然,还有其他的方案供你选择,例如:Lucene、讯搜、sphinx、Sort 。
Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引擎。Elasticsearch用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。
参考文献
ES官方文档:https://www.elastic.co/guide/cn/elasticsearch/guide/current/index-doc.html
ES学习文档:http://doc.codingdict.com/elasticsearch/95/
ES 下载地址:https://www.elastic.co/cn/downloads/elasticsearch
ES集群搭建:http://www.cnblogs.com/aubin/p/8012840.html
中文分词器IK:https://github.com/medcl/elasticsearch-analysis-ik/releases
安装Elasticsearch
1、安装 java jdk 环境
因为 es 搜索引擎需要 java 环境的支持,所以需要先安装 java jdk,并且检查在全局情况下 java 和 javac 命令是否可用。此处略去 java jdk 的安装过程。。。
2、下载es软件
1 | wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.11.1-linux-x86_64.tar.gz |
3、解压并移动到安装目录
1 | tar -zxvf elasticsearch-7.11.1-linux-x86_64.tar.gz |
4、进行相关配置
4.1、新建 data 目录(用于存放数据文件)
1 | [root@VM-0-15-centos home]# cd /usr/local/es |
4.2、修改config/elasticsearch.yml
1 | vi config/elasticsearch.yml |
取消或者修改下列项注释并修改:
1 | #集群名称 |
修改完毕后,:wq 保存退出
4.3、修改内存
1 | vi ./config/jvm.options |
因为我的服务器内存是1G、而es默认配置的内存是1G、所以启动时可能会出现内存不足的情况
所以此内存的配置,请大家根据自己服务器的内存情况进行配置
1 | -Xms256m |
:wq 保存并退出
4.4、为linux添加es服务的用户
Tips: elasticsearch 服务不允许以 root 用户进行启动,所以应该为elasticsearch新建一个用户,并且给定相应的权限,切换为 elasticsearch 的用户后,以 elasticsearch 用户的身份进行启动
此文中为Elasticsearch添加的用户是es,后面的文章会被该用户(es),进行配置相应的权限
1 | # 添加linux用户 |
4.5、编辑 /etc/security/limits.conf,在末尾加上
此配置文件用于配置用户的进程数和可以打开的文件的最大数
soft nproc:单个用户可用的最大进程数量(超过会警告)
hard nproc:单个用户可用的最大进程数量(超过会报错)
soft nofile:可打开的文件描述符的最大数(超过会警告)
hard nofile:可打开的文件描述符的最大数(超过会报错)
1 | # 进入 limits.conf 文件 |
4.6、在 20-nproc.conf,将 改为用户名(es的用户)*
对 es 用户做权限限制
1 | # 进入 20-nproc.conf 文件 |
4.7、修改sysctl.conf配置文件
此处用于指定用户所拥有的内存大小
1 | # vi 进入 sysctl.conf 配置文件 |
4.8、防火墙授权访问端口-9200
1 | # 在 root 用户下,开发es的端口9200 |
4.9、启动ES服务
登录刚才新建的elasticsearch用户,并启动elasticsearch
1 | # 切换 es 用户 |
Tips
此处启动后,如果 ctrl+c 结束后,es服务将会关闭,所以启动的时候,请加入
-d,表示以守护进程的方式启动 es 服务,用ps -aux | grep elasticsearch建仓 es 的服务状态
4.10、网页访问
然后再浏览器输入服务器的 IP + 端口(默认:9200) 就可以看到是否成功了

安装IK分词器
注意: 下载此软件,请和 es 的版本保持一致
ik分词器是一个中文分词器,安装这个后 es 就支持中文分词啦。IK提供了两个分词算法:ik_smart 和 ik_max_word,其中 ik_smart 为最少切分,ik_max_word为最细 粒度划分。elasticsearch-plugin 可以通过这个命令来查看加载进来的插件
1、下载软件
1 | wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.11.1/elasticsearch-analysis-ik-7.11.1.zip |
2、复制到es软件的插件目录
1 | # 进入es插件目录 |
3、解压软件
1 | # 解压 |
4、重启es软件
重启后,就可以使用 ik 中文分词器了
安装遇到的问题
用户内存过低
1 | max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144] |
翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144;
上文中,我已经修改了此参数为 65530,但是看来还是太小了
1 | 切换到root用户 |
安全提示错误日志
1 | Active licenses is now [Basic]; Security is disabled |
此提示可忽略。这是一个很普通的INFO级别的日志信息,就是linux服务器告诉我目前我的es集群的是默认的[Basic]许可,并且我的elasticsearch集群没有开启security(es集群中的security可以实现基于角色的访问控制,可以为es服务设置密码账号访问),这里我是没有开启security,即没有设置账号密码登陆elasticsearch服务。这就是一个安全认证的提示信息,仅此而已