elasticsearch搜索引擎

简介:
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,是基于java语言编写。

部署环境:
JDK 1.8
elasticsearch 6.2.2

下载链接:
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.2.tar.gz
wget https://github.com/medcl/elasticsearch-analysis-ik (需要与elasticsearch的版本相对应)

单机部署:(必须在非root下部署,否则无法运行)
解压安装包:
mkdir data # 新建数据文件夹
修改配置文件:
[es@CentOS6 config]$ sed "/^#/d" elasticsearch.yml
#----------------- Paths ---------------------
path.data: /home/es/elasticsearch/data
path.logs: /home/es/elasticsearch/logs
#---------------- Memory --------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false

#--------------- Network -------------
network.host: 0.0.0.0
http.port: 9200
修改内存配置文件:
[es@CentOS6 config]$ vim jvm.options
-Xms512m
-Xmx512m

修改系统参数
1、vi /etc/sysctl.conf
添加下面配置:
vm.max_map_count=65536
2、vi /etc/security/limits.conf
* soft nofile 819200
* hard nofile 819200
* soft nproc 2048
* hard nproc 4096
3、vi /etc/security/limits.d/90-nproc.conf
* soft nproc 1024
#修改为
* soft nproc 4096

安装中文分词插件:
git clone https://github.com/medcl/elasticsearch-analysis-ik
下载完切换到相应版本:git checkout tags/v6.2.2
进入elasticsearch-analysis-ik文件夹内执行:mvn clean package命令打包编译。
将target/releases文件夹内的elasticsearch-analysis-ik-6.2.2.zip copy到es的plugins文件夹内
解压后修改文件夹名称为analysis-ik

启动:
修改完以后重新登陆es用户
启动程序
./elasticsearch -d
编写脚本以实现其他用户可以正常启动:
runuser -l es -c '/usr/myapp/elasticsearch-6.2.2/bin/elasticsearch -d'

安装head插件:
在https://github.com/mobz/elasticsearch-head上下载head插件,并解压到/usr/local/elasticsearch-6.2.2/

必须要有node环境,没有的话需要安装:
wget https://npm.taobao.org/mirrors/node/latest-v4.x/node-v4.4.7-linux-x64.tar.gz

添加环境变量:
NODE_HOME=/usr/local/node-v4.4.7-linux-x64
PATH=$PATH:$NODE_HOME/bin
NODE_PATH=$NODE_HOME/lib/node_modules
export NODE_HOME PATH NODE_PATH

node -v

安装grunt-cli
npm install -g grunt-cli
grunt -version

修改文件Gruntfile.js,在第93行添加一行:
hostname: '0.0.0.0',

在/usr/local/elasticsearch-6.2.2/elasticsearch-head下执行:
npm install
安装完成后会生成一个node_modules的文件夹

修改elasticsearch.yml配置文件,添加两行:
http.cors.enabled: true
http.cors.allow-origin: "*"

执行命令启动head服务:
grunt server

需要开启防火墙限制
http://ip:9100

测试数据导入:
下载测试数据:https://github.com/bly2k/files/blob/master/accounts.zip?raw=true
测试数据导入:
curl -H "Content-Type: application/json" -XPOST 'localhost:9200/bank/account/_bulk?pretty' --data-binary "@accounts.json"

elasticsearch集群部署配置:

这里使用3台,修改elasticsearch.yml
cluster.name: lcc-application # 必须一样
node.name: node-191-168-10-173 # 必须不一样

path.data: /home/es/elasticsearch/elasticsearch-6.2.0_data/data/
path.logs: /home/es/elasticsearch/elasticsearch-6.2.0_data/logs/

bootstrap.memory_lock: false
bootstrap.system_call_filter: false

network.host: 0.0.0.0
http.port: 9200
#集群发现#集群节点ip或者主机
discovery.zen.ping.unicast.hosts: ["192.168.10.173", "192.168.10.174","192.168.10.175"]
#这个参数决定了要选举一个Master需要多少个节点。默认为1,设置为N/2+1
discovery.zen.minimum_master_nodes: 2

#下面两行配置为haad插件配置,三台服务器一致。
http.cors.enabled: true
http.cors.allow-origin: "*"