目录
ElasticSarch安装
官方网站:https://www.elastic.co/cn/
官方下载地址:https://www.elastic.co/cn/start
有一说一,这个外网访问起来着实着急啊。可以翻个墙下载一下安装包。
我下载的版本是7.6.1的版本
注:我的Linux环境是CentOS7的
安装es是需要jdk的环境的,我的是jdk1.8。
一、上传安装包及新建用户
新建一个目录,然后将下载的安装包上传至对于目录下
新建一个目录:mkdir -p /usr/local/es
将我们的es包拷贝至新建的es目录下
由于ElasticSearch不能用root用户操作,需要建一个子用户
1.创建 elasticsearch 用户组
groupadd elasticsearch
2.创建用户
useradd cx
passwd cx
3.将用户 添加到 elasticsearch 用户组
usermod -G elasticsearch cx
给用户操作权限
chown -R cx /usr/local/es
4.可以给我们新加的用户更多操作权限,设置sudo权限
输入visudo 命令,进行编辑,如下cx是我新加的用户
5.切换成我们刚创建的用户,然后进行es的安装
6.解压我们刚上传的安装包
二、修改配置
1.修改elasticsearch.yml
修改配置文件,config/elasticsearch.yml配置如下
cluster.name: cx-es
node.name: node-1
path.data: /usr/local/es/elasticsearch-7.6.1/data
path.logs: /usr/local/es/elasticsearch-7.6.1/log
network.host: 0.0.0.0
http.port: 9200
discovery.seed_hosts: ["自己服务器ip"]
cluster.initial_master_nodes: ["node-1"]
bootstrap.system_call_filter: false
bootstrap.memory_lock: false
http.cors.enabled: true
http.cors.allow-origin: "*"
条件允许的话,也可以把这个整jvm堆内存大小配置调大一点,修改jvm.option配置文件,根据自己服务器配置等调整
vi jvm.options
‐Xms1g
‐Xmx1g
个人遇到的坑:
一直在报这个错误
[cx@localhost elasticsearch-7.6.1]$ ./bin/elasticsearch
future versions of Elasticsearch will require Java 11; your Java version from [/java/jdk1.8.0_271/jre] does not meet this requirement
Exception in thread "main" 2021-03-07 23:47:22,616 main ERROR No Log4j 2 configuration file found. Using default configuration (logging only errors to the console), or user programmatically provided configurations. Set system property 'log4j2.debug' to show Log4j 2 internal initialization logging. See https://logging.apache.org/log4j/2.x/manual/configuration.html for instructions on how to configure Log4j 2
SettingsException[Failed to load settings from [elasticsearch.yml]]; nested: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]];
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1097)
at org.elasticsearch.common.settings.Settings$Builder.loadFromPath(Settings.java:1070)
at org.elasticsearch.node.InternalSettingsPreparer.prepareEnvironment(InternalSettingsPreparer.java:83)
at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:100)
at org.elasticsearch.cli.EnvironmentAwareCommand.createEnv(EnvironmentAwareCommand.java:91)
at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:86)
at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:125)
at org.elasticsearch.cli.Command.main(Command.java:90)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:126)
at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:92)
Caused by: ParsingException[Failed to parse object: expecting token of type [START_OBJECT] but found [VALUE_STRING]]
at org.elasticsearch.common.xcontent.XContentParserUtils.ensureExpectedToken(XContentParserUtils.java:78)
at org.elasticsearch.common.settings.Settings.fromXContent(Settings.java:617)
at org.elasticsearch.common.settings.Settings.access$400(Settings.java:82)
at org.elasticsearch.common.settings.Settings$Builder.loadFromStream(Settings.java:1093)
... 9 more
研究发现,是elasticsearch.yml文件中,key和value之间需要加空格。
2.修改 limits.conf 配置
elasticsearch.yml配置完后启动,发现程序没能够正常启动。控制台提速错误信息如下:
[2021-03-07T23:56:48,578][INFO ][o.e.n.Node ] [node-1] initialized
[2021-03-07T23:56:48,578][INFO ][o.e.n.Node ] [node-1] starting ...
[2021-03-07T23:56:48,704][INFO ][o.e.t.TransportService ] [node-1] publish_address {192.168.75.100:9300}, bound_addresses {[::]:9300}
[2021-03-07T23:56:48,927][INFO ][o.e.b.BootstrapChecks ] [node-1] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [2] bootstrap checks failed
[1]: max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/es/elasticsearch-7.6.1/log/cx-es.log
[2021-03-07T23:56:48,935][INFO ][o.e.n.Node ] [node-1] stopping ...
[2021-03-07T23:56:48,952][INFO ][o.e.n.Node ] [node-1] stopped
[2021-03-07T23:56:48,953][INFO ][o.e.n.Node ] [node-1] closing ...
[2021-03-07T23:56:48,968][INFO ][o.e.n.Node ] [node-1] closed
需修改配置:
问题1:max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]
ES因为需要大量的创建索引文件,需要大量的打开系统的文件,所以我们需要解除linux系统当中打开文件最大数目的限制,不然ES启动就会抛错
处理:sudo vi /etc/security/limits.conf
添加如下内容: 注意*不要去掉了
* soft nofile 65536
* hard nofile 131072
* soft nproc 2048
* hard nproc 4096
注:有个巨坑的点,就是改完之后启动还是会报这个错,需要用户重新登陆再重启即可
3.修改 sysctl.conf 配置
问题2:max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
调大系统的虚拟内存
原因:最大虚拟内存太小
每次启动机器都手动执行下。
处理:
sudo vi /etc/sysctl.conf
添加如下内容
vm.max_map_count=262145
保存后执行(刷新):sudo sysctl -p
4.修改最大线程数
当上面的配置都配置完后,我以为能够正常的启动了。结果很不出意外的没有启动成功,新的错误出现了,如下:
[2021-03-09T23:32:14,098][INFO ][o.e.b.BootstrapChecks ] [node-2] bound or publishing to a non-loopback address, enforcing bootstrap checks
ERROR: [1] bootstrap checks failed
[1]: max number of threads [1024] for user [cx] is too low, increase to at least [4096]
ERROR: Elasticsearch did not exit normally - check the logs at /usr/local/es/elasticsearch-7.6.1/log/cx-es.log
[2021-03-09T23:32:14,107][INFO ][o.e.n.Node ] [node-2] stopping …
问题:
max number of threads [1024] for user [es] likely too low, increase to at least [4096]
无法创建本地线程问题,用户最大可创建线程数太小解决方案:修改90-nproc.conf(Centos6)/20‐nproc.conf(Centos7) 配置文件
处理:
修改普通用户可以创建的最大线程数
sudo vi /etc/security/limits.d/20‐nproc.conf
* soft nproc 1024#修改为
* soft nproc 4096
改完之后启动还是会报这个错,需要用户重新登陆再重启即可
三、启动成功,验证一下
配置完后再次启动es,启动成功,浏览器请求 http:ip:port,返回如下信息说明elasticserach安装成功。
注:记得开放端口,或关闭防火墙也行
{
"name" : "node-1",
"cluster_name" : "cx-es",
"cluster_uuid" : "XJEPVaRtS7S673iARDlhDw",
"version" : {
"number" : "7.6.1",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "aa751e09be0a5072e8570670309b1f12348f023b",
"build_date" : "2020-02-29T00:15:25.529771Z",
"build_snapshot" : false,
"lucene_version" : "8.4.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
至此,elasticSearch单机版安装成功。
后台启动:
1:nohup /usr/local/es/elasticsearch‐7.6.1/bin/elasticsearch 2>&1 &
2: ./elasticsearch -d //-d表示后台启动
Kibana安装
由于我的ElasticSearch安装的是7.6.1版本,则我的Kibana安装的也是7.6.1版本
在ES的官方网站可以下载相应的安装包。
一、上传安装包,解压
将压缩包上传至相应的目录中。我这里放的是跟我es在同一个目录。
tar -zxvf kibana-7.6.1-linux-x86_64.tar.gz 进行解压,
然后通过mv 命令进行重命名,这一步随意
二、修改配置
1.修改 kibana.yml 配置
进入config目录,编辑kibana.yml
vi kibana.yml
主要修改这三个参数:
server.port: 5601
server.host: "服务器IP"
elasticsearch.hosts: ["http://IP:9200"] # 这里是elasticsearch的访问地址
这就已经配置完毕了,然后进入到bin目录下,nohup ./kibana & 进行后台启动
然后通过ip:5601即可访问(记得开放相应端口哈)
ik分词器
下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
我的ik分词器也是7.6.1版本,与ElaticSearch版本保持一致的
一、上传安装包,解压
在/elasticsearch-7.6.1/plugins/的目录下新建ik文件夹
mkdir -p /usr/local/es/elasticsearch-7.6.1/plugins/ik
然后将ik分词器的zip包上次至该目录下,进行解压。
unzip elasticsearch-analysis-ik-7.6.1.zip
二、重启ES
重启es,ik分词器即生效。
至此,我们的单机版ElasticSarch、Kibana、IK分词器已经安装成功。
集群搭建:ElasticSearch集群搭建