1、安装配置 Elasticsearch
安装JDK elasticsearch 需要 java8 以上; 这里安装最新版的 java10 ; 下载 jdk
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http://www.oracle.com/; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm"因为版本会一直升级; 如果执行上面这段代码返回了 ERROR 404: Not Found ; 那说明有新版本了; 那就自己去官网复制最新的下载链接;
http://www.oracle.com/technetwork/java/javase/downloads/jdk10-downloads-4416644.html ;选中 Accept License Agreement 然后在 jdk-10.0.2_linux-x64_bin.rpm 上右键复制链接地址; 替换上面命令中的下载链接;
我这里把 10.0.2 版本的先下载下来上传到腾讯云了; 可以用下面的链接代替;
wget https://study-1251254015.cos.ap-beijing.myqcloud.com/jdk-10.0.2_linux-x64_bin.rpm安装 jdk 注意文件名要跟链接中的保持一致;
sudo rpm -ivh jdk-10.0.2_linux-x64_bin.rpm能查看到版本号则表示安装成功;
java -version2、安装 Elasticsearch 下载 elasticsearch ;
官网的下载链接是: https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.rpm 因为从国外下载比较慢;
为了方便实验我给先下载下来上传到腾讯云了; 可以使用下面的命令代替官网链接;
wget https://study-1251254015.cos.ap-beijing.myqcloud.com/elasticsearch-6.2.4.rpm安装 elasticsearch ;
sudo rpm -ivh elasticsearch-6.2.4.rpm安装完成后编辑配置项;
vim /etc/elasticsearch/elasticsearch.yml去掉下面三行的注释;
bootstrap.memory_lock: true network.host: 192.168.0.1 http.port: 9200 然后把 network.host 改成 localhost启动 elasticsearch ;
sudo systemctl daemon-reload sudo systemctl enable elasticsearch.service sudo systemctl start elasticsearch稍等片刻给 elasticsearch 个启动的时间; 因为 elasticsearch 启动的略慢; 后续涉及到重启 elasticsearch 的时候也都记得稍等片刻; 然后查看 9200 端口检查是否成功启动;
netstat -plntu如果半天过后仍然没有启动起来; 可能是内存不够出错;
vim /etc/elasticsearch/jvm.options把内存改为自己服务器内存的一半以下; 比如说这里改为 512M ;
尝试启动;
sudo systemctl restart elasticsearch然后查看 9200 端口检查是否成功启动;
netstat -plntu查看状态是否正常;
curl 'localhost:9200'至此 elasticsearch 算是安装完成了;
安装配置中文分词
安装 ik-analyzer 但是如果想用来搜索中文; 还需要安装中文分词; 怎么算分词呢? 全文搜索和中文分词 文章中已经简单介绍过了; 这里我们从 elasticsearch 实战一遍; 比如说 宫之洋技术博客 这句话; elasticsearch 内置的分词器对中文相当不友好; 只会一个只一个字的分;
curl -H 'Content-Type: application/json' -XGET 'localhost:9200/_analyze?pretty' -d '{"text":"宫之洋技术博客"}'所以我们需要一个中文分词器; 这里选择和 elasticsearch 配套的 ik-analyzer ; 安装 ik-analyzer ;
`/usr/share/elasticsearch/bin/elasticsearch-plugin install` https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.4/elasticsearch-analysis-ik-6.2.4.zip如果报下面这种错误的话可能是网络不好;
Exception in thread "main" java.net.ConnectException: Connection timed out (Connection timed out) at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)沐浴更衣大念帅白最帅; 再试几次即可; 实在不行; 那还是用我下载好的链接吧;
/usr/share/elasticsearch/bin/elasticsearch-plugin install https://study-1251254015.cos.ap-beijing.myqcloud.com/elasticsearch-analysis-ik-6.2.4.zip然后重新启动下服务;
sudo systemctl restart elasticsearch然后查看 9200 端口检查是否成功启动;
netstat -plntu看下 ik-analyzer 的效果;
curl -H 'Content-Type: application/json' -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"宫之洋技术博客"}'我们可以看到 技术 和 博客 两个词语已经成功组合到了一起; 然而本博主 宫之洋 的名字被硬生生的拆成了3个字这怎么忍; 还好强大的 analysis-ik 支持自定义词库; 增加自定义词库;
vim /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml在 ext_dict 中自定义一个词库文件 baijunyao.dic ;
echo '宫之洋' > /etc/elasticsearch/analysis-ik/baijunyao.dic重新启动下服务;
sudo systemctl restart elasticsearch然后查看 9200 端口检查是否成功启动;
netstat -plntu再看下分词效果 ;
curl -H 'Content-Type: application/json' -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"宫之洋技术博客"}'image
完工;