目录
1、安装es
1.1 es准备
# 服务器环境需为JDK1.8以上
# 下载es,可根据自己选择下载版本,此次选用为当前最新版本7.13.2
# 历史版本地址
https://www.elastic.co/cn/downloads/past-releases
# 最新版本地址
https://www.elastic.co/cn/downloads/elasticsearch
# 解压文件至 /usr/local
tar -zxvf elasticsearch-7.13.2-linux-x86_64.tar.gz
1.2 配置文件
1.2.1 elasticsearch.yml
1)配置文件详解
此配置文件并未罗列出所有配置,是根据elasticsearch7.13.2配置文件注释,自定义配置可手动添加或删除官方配置文件,然后自定义配置文件。
# ======================== Elasticsearch Configuration =========================
# Elasticsearch为大多数设置提供了合理的默认值,在开始调整配置之前,请确保了解你想要达到的目标和结果。
# 配置节点的主要方法是通过此文件。此模板列出您可能要为生产集群配置的最重要设置。
#
# ---------------------------------- Cluster -----------------------------------
# 集群名称 Elasticsearch会自动发现在同一网段下的es集群,如果在同一个网段下有多个集群,可以利用这个属 性来区分不同的集群。
#cluster.name: my-application
#
# ------------------------------------ Node ------------------------------------
# 节点名称 Elasticsearch启动的时候会自动创建节点名称,但是你也可以进行配置。
#node.name: node-1
# 每个节点都可以定义一些与之关联的通用属性,用于后期集群进行碎片分配时的过滤。
#node.attr.rack: r1
#
# ----------------------------------- Paths ------------------------------------
# 设置索引数据的存储路径
#path.data: /path/to/data
# 日志存储路径
#path.logs: /path/to/logs
#
# ----------------------------------- Memory -----------------------------------
# 设置为true来锁住内存,因为当JVM开始swapping的时候Elasticsearch的效率会降低,所以要保证他不被 swap,可以吧ES_MIN_MEN和ES_MAX_MEN两个环境变量设置为同一个值,并且保证机器有足够的内存分配给 Elasticsearch,同时也要允许Elasticsearch的进程可以锁住内存,linux下可以通过`ulimit -l unlimited`命令。
# 通俗的来讲就是这个只能我用,别人不能用
#bootstrap.memory_lock: true
#
# ---------------------------------- Network -----------------------------------
# 设置绑定的ip地址,可以是ipv4或ipv6的,默认为0.0.0.0
#network.host: 192.168.0.1
# 设置对外服务的Http端口,默认是9200
#http.port: 9200
#
# --------------------------------- Discovery ----------------------------------
#当Elasticsearch首次启动时,它将尝试发现在同一主机上运行的其他节点。如果在几秒钟内找不到任何当选的主节点,则Elasticsearch将形成一个包含所有其他已发现节点的集群。无需在开发模式下进行任何额外配置即可构成此集群非常有用,但这不适用于生产环境,因为它有可能形成多个集群并因此丢失数据。
#
# 在此节点启动时传递要执行发现的主机的初始列表
#discovery.seed_hosts: ["host1", "host2"]
# 使用一组初始的主节点引导集群:
#cluster.initial_master_nodes: ["node-1", "node-2"]
#
# ---------------------------------- Various -----------------------------------
# 设置是否可以通过正则或者_all删除或者关闭索引。
#action.destructive_requires_name: true
2)自定义配置文件
此自定义配置文件是在官方基础上修改的,只列出了修改部分。
vim /usr/local/elasticsearch-7.13.2/config/elasticsearch.yml
#修改文件,注意注释掉以前的,重新添加一行
#network.host: 192.168.0.1
network.host: 0.0.0.0 #外网访问,ip地址访问
# 修改数据存储路径
#path.data: /path/to/data
path.data: /usr/local/elasticsearch-7.13.2/data
#修改日志存储路径
#path.logs: /path/to/logs
path.logs: /usr/local/elasticsearch-7.13.2/logs
# 节点名称。不配置默认为node-1,用于cluster.initial_master_nodes时配置
node.name: node-1
# 是否主节点
node.master: true
# 使用一组初始的主节点引导集群
#cluster.initial_master_nodes: ["node-1", "node-2"]
discovery.seed_hosts: ["127.0.0.1"]
cluster.initial_master_nodes: ["node-1"]
# 注:此设置一定要设置,否则启动将会报错
# 解决跨域用于head插件
http.cors.enabled: true
http.cors.allow-origin: "*"
1.2.2 jvm.options
设置最小及最大的JVM堆内存大小:
在jvm.options中设置 -Xms和-Xmx:
1) 两个值设置为相等
2) 将Xmx 设置为不超过物理内存的一半。
1.2.3 设置每个进程最多允许打开的文件数
在linux上根据系统资源情况,可将每个进程最多允许打开的文件数设置大些。
su limit -n 查询当前文件数
使用命令设置limit:
# 先切换到root,设置完成再切回elasticsearch用户。
sudo su
ulimit -n 65536
su elasticsearch
也可通过下边的方式修改文件进行持久设置
sudo vim /etc/security/limits.conf
将下边的行加入此文件:
elasticsearch - nofile 65536
1.2 启动es
cd /usr/local/elasticsearch-7.13.2/bin
# 启动
./elasticsearch
# 后台启动
./elasticsearch -d
1.2.1 启动中可能出现错误
1)linux无法以root用户启动es
# 错误信息
java.lang.RuntimeException: can not run elasticsearch as root
# 解决方案
# 创建用户组
groupadd es
# 创建新用户
useradd es -g es
# 设置密码
passwd es
# 设置权限
chown -R es:es /usr/local/elasticsearch-7.13.2
# 注:以上操作是在root用户下
# 切换到es用户下,启动es
su es
2)内存不够
具体解决方案与其他内存不够现象根据情况不同查找解决方案
Exception in thread "main" java.lang.RuntimeException: starting java failed with [1]
Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c5330000, 986513408, 0) failed; error='Cannot allocate memory' (errno=12)
at org.elasticsearch.tools.launchers.JvmOption.flagsFinal(JvmOption.java:119)
at org.elasticsearch.tools.launchers.JvmOption.findFinalOptions(JvmOption.java:81)
at org.elasticsearch.tools.launchers.JvmErgonomics.choose(JvmErgonomics.java:38)
at org.elasticsearch.tools.launchers.JvmOptionsParser.jvmOptions(JvmOptionsParser.java:135)
at org.elasticsearch.tools.launchers.JvmOptionsParser.main(JvmOptionsParser.java:86)
1.3 停止es
#停止es
lsof -i:9200 #获取占用端口 pid
kill -9 pid #根据pid杀死es进程
2、安装head插件
2.1 下载与安装
注:不可把head插件放在plugins目录下,放在与plugins同级目录下即可
# git
git --version #判断是否安装git
# 未安装
sudo apt-get install git
# 已安装
git clone https://github.com/mobz/elasticsearch-head.git
# node
node -v # 判断node是否已安装
# 未安装
sudo apt-get install python-software-properties #先安装python
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - #手动下载执行文件
sudo apt-get install nodejs #安装nodejs
# 在elasticsearch-head目录下执行
npm install
# 启动
npm run start
# 后台运行
nohup npm run start >/dev/null 2>&1 &
3、安装ik分词器(v7.13.2)
3.1 下载ik分词器
# 在elasticsearch安装目录plugins下创建ik文件夹
mkdir ik
# 解压安装包
unzip elasticsearch-analysis-ik-7.13.2.zip
# 重启elasticsearch