为什么用ElasticSearch?
象网PMP小程序需要给学员提供搜题库的功能,可以在提干、选项、解析里搜索关键词,未来还要在几乎所有文档中进行全文搜索,基于MySql数据库做全文搜索需要对每个被搜索的字段进行改造,而且MySql作为关系型数据库,处理文本类型数据效率也不高。
ElasticSearch是基于Lucene的搜索服务器,提供全文搜索引擎,基于RESTful web接口,直接返回JSON格式的数据,非常适合远程调用。
以前用过Lucene,必须用Java调用,且编程复杂,Elasticsearch虽然是用Java语言开发的,但对Lucene原有接口进行了大规模简化,可直接用Python调用,非常方便。
安装新版本Elasticsearch
我安装的是linux版,windows上怎么安装使用就别往下看了,我也没用过。
官网www.elastic.co下载最新版本,有多项产品,别下错了,我下载的是7.5.0版本。文件是 elasticsearch-7.5.0-linux-x86_64.tar.gz
解压
tar -xvf elasticsearch-7.5.0-linux-x86_64.tar.gz
elasticsearch启动非常简单,但是不允许使用root用户启动,所以要添加用户(用户名为elasticsearch)、设置密码、把刚才解压出来的elasticsearch-7.5.0目录权限赋给该用户、切换到新用户
adduser elasticsearch
passwd elasticsearch
chown -R elasticsearch:elasticsearch elasticsearch-7.5.0
su elasticsearch
为避免报错,需要修改一下配置文件
sudo vim /etc/sysctl.conf
添加一行 vm.max_map_count=655360
执行
sysctl -p
好了,进入elasticsearch-7.5.0 目录,启动吧
./bin/elasticsearch
等等,这是前台运行,如果要后台运行,后面加参数-d
./bin/elasticsearch -d
关闭进程 ,先用ps命令找到进程号,然后kill掉,kill后要再查找一次啊,杀不干净的话下次启动报错
ps -aux | grep elastic
kill -9 进程号
注意事项
如果需要从其他服务器或外网调用elasticsearch,需要修改配置elasticsearch配置文件
vim elasticsearch-7.5.0/config/elasticsearch.yml
把network.host那行的注释去掉
改为 network.host: 0.0.0.0
放开 node.name: node-1
加入一行 cluster.initial_master_nodes: ["node-1"]