1.下载并解压elasticsearch
官网 http://www.elastic.co/downloads/elasticsearch
本次下载地址 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz
解压 tar -zxvf elasticsearch-6.2.3.tar.gz
2.修改配置elasticsearch.yml文件
单机版配置
# 集群的名字(默认elasticsearch)
cluster.name: snjx-search
# 节点名字
node.name: master
# 数据存储目录(多个路径用逗号分隔)
path.data: /usr/local/snjx/datas
# 日志目录
path.logs: /usr/local/snjx/logs
#本机的ip地址
network.host: 192.168.1.111
#设置集群中master节点的初始列表,可以通过这些节点来自动发现新加入集群的节点
discovery.zen.ping.unicast.hosts: ["192.168.1.111:9300"]
# 设置节点间交互的tcp端口(集群),(默认9300)
transport.tcp.port: 9300
# 监听端口(默认)
http.port: 9200
# 增加参数,使head插件可以访问es
http.cors.enabled: true
http.cors.allow-origin: "*
集群配置
cluster.name: snjx-search node.name: node-5 #如果是master节点设置成true node.master: false #如果是data节点设置成true node.data: true path.data: /usr/local/snjx/datas path.logs: /usr/local/snjx/logs network.host: master http.port: 9200 transport.tcp.port: 9300 discovery.zen.ping.unicast.hosts: ["10.20.23.29:9300", "10.20.23.38:9300","10.20.23.41:9300"] discovery.zen.minimum_master_nodes: 1 bootstrap.memory_lock: false bootstrap.system_call_filter: false #解决跨域问题 http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-credentials: true
config/ jvm.options配置
默认1G 由于是笔记本搭建虚机,配置有限仅供学习使用 特设置为512M 土豪请无视
如果进行了datas.logs 自定义路径
search 用户需要赋权
3.启动es
如果是用root账号启动,会报以下错误
Exception in thread "main" java.lang.RuntimeException: don't run elasticsearch as root.
- 这是出于系统安全考虑设置的条件。由于ElasticSearch可以接收用户输入的脚本并且执行,为了系统安全考虑,
建议创建一个单独的用户用来运行ElasticSearch - 创建search用户组及search用户
groupadd search
useradd search -g search -p search
- 1
- 2
- 更改elasticsearch文件夹及内部文件的所属用户及组为search:search
cd /usr/local/snjx/elasticsearch
chown -R search:search elasticsearch-6.2.3
- 1
- 2
- 切换到elsearch用户再启动
su search
cd /usr/local/snjx/elasticsearch/elasticsearch-6.2.3/bin
./elasticsearch 正常启动
./elasticsearch -d 后台启动
4.http访问192.168.1.111:9200
5.head插件下载
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
6.安装nodejs head插件依赖node环境
wget https://npm.taobao.org/mirrors/node/latest-v9.x/node-v9.10.0-linux-x64.tar.gz
配置下环境变量,编辑vim /etc/profile添加
#node
export NODE_HOME=/usr/local/snjx/node/node-v9.10.0-linux-x64
export PATH=$PATH:$NODE_HOME/bin
export NODE_PATH=$NODE_HOME/lib/node_modules
执行 source /etc/profile 刷新文件
7.安装grunt
grunt是基于Node.js的项目构建工具,可以进行打包压缩、测试、执行等等的工作,head插件就是通过grunt启动
cd /usr/local/snjx/elasticsearch/elasticsearch-head-master
npm install -g grunt-cli //执行后会生成node_modules文件夹
检查是否安装成功
修改hostname vim /etc/hosts
重启生效 查看是否修改成功
hostname
8.修改head插件源码
修改服务器监听地址:Gruntfile.js
在keepalive:true 下面添加 hostname: '*'
修改连接地址:_site/app.js
9.运行head
在elasticsearch-head-master目录下
npm install(安装下载下来的包)
grunt server
后台启动elasticsearch-head
nohup grunt server &
nohup grunt server &exit
如果想关闭head插件,查找进程命令:
ps aux|grep head
10.访问http://ip:9100
注意 如果 启动报错
这里面很明显的有两个参数的值太小
1.max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
修改/etc/security/limits.conf文件,添加或修改如下行:
* hard nofile 65536
* soft nofile 65536
2.max virtual memory areas vm.max......
修改 /etc/sysctl.conf 文件,添加如下行:
vm.max_map_count=262144
修改好了以后,然后sysctl -p使系统配置生效,调用sysctl -a查看,发现参数并没有变动,要重启才可以。
中文分词安装
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip
官网地址 https://github.com/medcl/elasticsearch-analysis-ik
拼音分词
./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.2.3/elasticsearch-analysis-pinyin-6.2.3.zip
官网地址 https://github.com/medcl/elasticsearch-analysis-pinyin
同义词分词
官网地址 https://github.com/bells/elasticsearch-analysis-dynamic-synonym/tree/master
./bin/elasticsearch-plugin install https://github.com/bells/elasticsearch-analysis-dynamic-synonym/releases/download/5.1.1/elasticsearch-analysis-dynamic-synonym-5.1.1.zip
手动安装分词插件
下载完成后unzip -x elasticsearch-analysis-pinyin-5.6.8.zip mv /usr/local/snjx/elk/elasticsearch-5.6.8/plugins
ik 带有两个分词器
ik_max_word :会将文本做最细粒度的拆分;尽可能多的拆分出词语
ik_smart:会做最粗粒度的拆分;已被分出的词语将不会再次被其它词语占有
The plugin includes analyzer: pinyin
, tokenizer: pinyin
and token-filter: pinyin
说明:synonyms_path
是必须要配置的,根据它的值是否是以http://
或者https://
开头来判断是本地文件,还是远程文件。
interval
非必须配置的,默认值是60,单位秒,表示间隔多少秒去检查同义词文件是否有更新。
ignore_case
非必须配置的, 默认值是false。
expand
非必须配置的, 默认值是true。
format
非必须配置的, 默认值是空字符串, 如果为wordnet,则表示WordNet结构的同义词。
热更新同义词说明
- 对于本地文件:主要通过文件的修改时间戳(Modify time)来判断是否要重新加载。
- 对于远程文件:
synonyms_path
是指一个url。 这个http请求需要返回两个头部,一个是Last-Modified
,一个是ETag
,只要有一个发生变化,该插件就会去获取新的同义词来更新相应的同义词。
注意: 不管是本地文件,还是远程文件,编码都要求是UTF-8的文本文件