当前位置:   article > 正文

Linux安装ElasticSearch_elasticsearch linux安装

elasticsearch linux安装

Linux安装ElasticSearch



0. 写在前面

  • Linux版本:CentOS7.5
  • ES版本:ElasticSearch-7.8.0

1. 环境准备

  • 运行ElasticSearch,需要安装并配置JDK
    • 设置$JAVA_HOME
  • ElasticSearch各个版本对Java的依赖可参考官网:https://www.elastic.co/cn/support/matrix#matrix_jvm
    • ElasticSearch5.X需要Java8以上的版本
    • ElasticSearch从V6.5开始支持Java11
    • V7.0版本开始,内置了Java环境
  • ElasticSearch比较消耗内存,建议虚拟机4G或以上内存,jvm1g以上的内存分配

可以参考es(Windows环境下)文件elasticsearch-env.bat

在这里插入图片描述

2. ES安装

2.1ES解压

  • 安装包下载地址

https://www.elastic.co/downloads/past-releases/elasticsearch-7-8-0

2.2 新增普通用户

因为安全问题,Elasticsearch 不允许 root 用户直接运行, 所以要创建一个ES专属的普通用户es

[whybigdata@node02 ~]$ sudo useradd es
[whybigdata@node02 ~]$ sudo passwd es
更改用户 es 的密码 。
新的 密码:
passwd:所有的身份验证令牌已经成功更新。
  • 1
  • 2
  • 3
  • 4
  • 5

2.3 给新创建的普通用户授权

[whybigdata@node02 ~]$ chown -R es:es /opt/module/es-7.8.0
  • 1

2.4 给新创建的普通用户设置sudo权限

[whybigdata@node02 ~]$ vim /etc/sudoers
[whybigdata@node02 ~]$ vim /etc/sudoers
  • 1
  • 2

root ALL(ALL) ALL下面新增

es ALL(ALL) ALL

  • 或者:
# 使用root用户执行
visudo
# 在 root	ALL(ALL)	ALL下面新增
es	ALL(ALL)	ALL
  • 1
  • 2
  • 3
  • 4

2.5 前置准备

[whybigdata@node02 ~]$ vim /etc/security/limits.conf
  • 1

在文件末尾中增加下面内容:每个进程可以打开的文件数的限制

es soft nofile 65536 
es hard nofile 65536
  • 1
  • 2
[whybigdata@node02 ~]$ vim /etc/security/limits.d/20-nproc.conf
  • 1

在文件末尾中增加下面内容 :每个进程可以打开的文件数的限制;操作系统级别对每个用户创建的进程数的限制

es soft nofile 65536 
es hard nofile 65536

* hard nproc 4096
  • 1
  • 2
  • 3
  • 4

注:* 带表 Linux 所有用户名称

[whybigdata@node02 ~]$ sudo vim /etc/sysctl.conf
  • 1

在文件中增加下面内容:一个进程可以拥有的 VMA(虚拟内存区域)的数量,默认值为 65536

vm.max_map_count=655360
  • 1
  • 保存后执以下命令使配置生效
[whybigdata@node02 ~]$ sudo sysctl -p
vm.max_map_count = 262144
  • 1
  • 2
修改JVM配置
################################################################
## IMPORTANT: JVM heap size
################################################################
##
## You should always set the min and max JVM heap
## size to the same value. For example, to set
## the heap to 4 GB, set:
##
-Xms1g
-Xmx1g
##
## See https://www.elastic.co/guide/en/elasticsearch/reference/current/heap-size.html
## for more information
##
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

主要修改以下参数值

cluster.name: my-application

node.name: node-1

path.data: ./data

path.logs: ./logs

network.host: 0.0.0.0

http.port: 9200

cluster.initial_master_nodes: ["node-1"]
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Note:cluster.initial_master_nodes必须配置(即使名字跟默认的一样,也要放开注释),否则启动失败,失败日志「elasticsearch.log」说如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NtUhF5r3-1675309281939)(0.png)]

启动es

[es@node02 es-7.8.0]$ bin/elasticsearch -d
future versions of Elasticsearch will require Java 11; your Java version from [/opt/module/jdk1.8.0_212/jre] does not meet this requirement
future versions of Elasticsearch will require Java 11; your Java version from [/opt/module/jdk1.8.0_212/jre] does not meet this requirement
Java HotSpot(TM) 64-Bit Server VM warning: Cannot open file logs/gc.log due to No such file or directory

[es@node02 es-7.8.0]$ jps
76151 Jps
76110 Elasticsearch

[es@node02 es-7.8.0]$ ps -ef | grep es
root          1      0  0 14:45 ?        00:00:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
dbus        592      1  0 14:45 ?        00:00:02 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
root      68926   1742  0 19:29 pts/0    00:00:00 su - es
es        68943  68926  0 19:29 pts/0    00:00:00 -bash
es        76110      1 21 19:46 pts/0    00:00:40 /opt/module/jdk1.8.0_212/bin/java -Xshare:auto -Des.networkaddress.cache.ttl=60 -Des.networkaddress.cache.negative.ttl=10 -XX:+AlwaysPreTouch -Xss1m -Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djna.nosys=true -XX:-OmitStackTraceInFastThrow -Dio.netty.noUnsafe=true -Dio.netty.noKeySetOptimization=true -Dio.netty.recycler.maxCapacityPerThread=0 -Dio.netty.allocator.numDirectArenas=0 -Dlog4j.shutdownHookEnabled=false -Dlog4j2.disable.jmx=true -Djava.locale.providers=SPI,JRE -Xms1g -Xmx1g -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=75 -XX:+UseCMSInitiatingOccupancyOnly -Djava.io.tmpdir=/tmp/elasticsearch-3279581942497379597 -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=data -XX:ErrorFile=logs/hs_err_pid%p.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps -XX:+PrintTenuringDistribution -XX:+PrintGCApplicationStoppedTime -Xloggc:logs/gc.log -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=32 -XX:GCLogFileSize=64m -XX:MaxDirectMemorySize=536870912 -Des.path.home=/opt/module/es-7.8.0 -Des.path.conf=/opt/module/es-7.8.0/config -Des.distribution.flavor=default -Des.distribution.type=tar -Des.bundled_jdk=true -cp /opt/module/es-7.8.0/lib/* org.elasticsearch.bootstrap.Elasticsearch -d
es        76171  76110  0 19:46 pts/0    00:00:00 /opt/module/es-7.8.0/modules/x-pack-ml/platform/linux-x86_64/bin/controller
es        77441  68943  0 19:49 pts/0    00:00:00 ps -ef
es        77442  68943  0 19:49 pts/0    00:00:00 grep --color=auto es
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18

启动成功,Web页面如下:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ya5Mf6NV-1675309281940)(1.png)]

Note:注意启动ES不要使用root用户,否则会出现以下错误日志

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7PiCpDhc-1675309281941)(2.png)]

3. Kibana安装

  • 下载地址:

https://www.elastic.co/downloads/past-releases/kibana-7-8-0

3.1 上传并解压tar文件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7lyQ8jte-1675309281942)(3.png)]

进入到config目录,修改kibana.yml文件

# 服务端口
server.port: 5601
# 运行服务的IP设置
server.host: "0.0.0.0"
# elasticsearch访问地址
elasticsearch.hosts: ["http://localhost:9200"]
# kibana汉化
i18n.locale: "zh-CN"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

进入bin目录,后台启动kibana

nohup ./kibana & 
  • 1

服务Web端:http://node02:5601/

4. ik分词器的安装

ES提供插件机制对系统进行扩展,下文在线安装以icu分词器的安装为例子,离线安装以ik分词器为例子:

4.1 为什么要安装其他分词器

ES默认的分词器为standard标准分词器,如下图的执行结果

  • 示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ODg3wZpt-1675309281943)(04.png)]

  • 标准分词器执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-QhUN9pGd-1675309281944)(041.png)]

「中华人民共和国」这一整体被拆分为一个一个字,并不是很友好。下文会展示使用其他分词器在同一示例下的执行结果

4.2下载地址

https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.8.0/elasticsearch-analysis-ik-7.8.0.zip

[es@node02 ~]$ cd /opt/module/es-7.8.0/plugins
[es@node02 plugins]$ mkdir ik-7.8.0
[es@node02 plugins]$ cd /opt/software/
[es@node02 software]$ ll
总用量 3192
-rw-rw-r-- 1 whybigdata whybigdata 3267201 119 10:54 elasticsearch-analysis-ik-7.8.0.tar.gz
[es@node02 software]$ tar -zxvf elasticsearch-analysis-ik-7.8.0.tar.gz -C /opt/module/es-7.8.0/plugins/ik-7.8.0/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

启动es,报错信息如下:

[2023-01-19T11:05:00,534][ERROR][o.e.b.Bootstrap          ] [node-1] Exception
java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [ik-7.8.0]
.......
[2023-01-19T11:05:00,542][ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [node-1] uncaught exception in thread [main]
org.elasticsearch.bootstrap.StartupException: java.lang.IllegalStateException: Could not load plugin descriptor for plugin directory [ik-7.8.0]
....
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

在线安装

[es@node02 ~]$ /opt/module/es-7.8.0/bin/elasticsearch-plugin --help
future versions of Elasticsearch will require Java 11; your Java version from [/opt/module/jdk1.8.0_212/jre] does not meet this requirement
A tool for managing installed elasticsearch plugins

Commands
--------
list - Lists installed elasticsearch plugins
install - Install a plugin
remove - removes a plugin from Elasticsearch

Non-option arguments:
command

Option             Description
------             -----------
-E <KeyValuePair>  Configure a setting
-h, --help         Show help
-s, --silent       Show minimal output
-v, --verbose      Show verbose output
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 查看已安装的插件
[es@node02 ~]$ cd /opt/module/es-7.8.0/
[es@node02 es-7.8.0]$ bin/elasticsearch-plugin list
  • 1
  • 2
  • 安装插件
[es@node02 es-7.8.0]$ bin/elasticsearch-plugin install analysis-icu
  • 1
  • 删除插件
[es@node02 es-7.8.0]$ bin/elasticsearch-plugin remove analysis-icu
  • 1

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SkUGqcgu-1675309281945)(4.png)]

Note:安装和删除完插件之后,需要重启ES服务才能生效!

  • 示例:icu分词器

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k3murZ4U-1675309281946)(051.png)]

  • 执行结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YVfeXE6o-1675309281946)(052.png)]

ik分词器不能在线安装,需要离线安装

离线安装

[es@node02 software]$ unzip elasticsearch-analysis-ik-7.8.0.zip -d /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/
Archive:  elasticsearch-analysis-ik-7.8.0.zip
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/elasticsearch-analysis-ik-7.8.0.jar
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/httpclient-4.5.2.jar
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/httpcore-4.4.4.jar
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/commons-logging-1.2.jar
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/commons-codec-1.9.jar
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/plugin-descriptor.properties
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/plugin-security.policy
   creating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/main.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/quantifier.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/extra_single_word_full.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/IKAnalyzer.cfg.xml
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/surname.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/suffix.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/stopword.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/extra_main.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/extra_stopword.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/preposition.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/extra_single_word_low_freq.dic
  inflating: /opt/module/es-7.8.0/plugins/analysis-ik-7.8.0/config/extra_single_word.dic

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

ik分词器有粒度之分

  • 粗粒度:ik_smart

示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IUPylg35-1675309281947)(061.png)]

结果

{
  "tokens" : [
    {
      "token" : "中华人民共和国",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 0
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 细粒度:ik_max_word

示例

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Jaf2Uadz-1675309281948)(8.png)]

结果

{
  "tokens" : [
    {
      "token" : "中华人民共和国",
      "start_offset" : 0,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 0
    },
    {
      "token" : "中华人民",
      "start_offset" : 0,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 1
    },
    {
      "token" : "中华",
      "start_offset" : 0,
      "end_offset" : 2,
      "type" : "CN_WORD",
      "position" : 2
    },
    {
      "token" : "华人",
      "start_offset" : 1,
      "end_offset" : 3,
      "type" : "CN_WORD",
      "position" : 3
    },
    {
      "token" : "人民共和国",
      "start_offset" : 2,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 4
    },
    {
      "token" : "人民",
      "start_offset" : 2,
      "end_offset" : 4,
      "type" : "CN_WORD",
      "position" : 5
    },
    {
      "token" : "共和国",
      "start_offset" : 4,
      "end_offset" : 7,
      "type" : "CN_WORD",
      "position" : 6
    },
    {
      "token" : "共和",
      "start_offset" : 4,
      "end_offset" : 6,
      "type" : "CN_WORD",
      "position" : 7
    },
    {
      "token" : "国",
      "start_offset" : 6,
      "end_offset" : 7,
      "type" : "CN_CHAR",
      "position" : 8
    }
  ]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67

创建索引时可以指定ik分词器作为默认分词器

PUT /es_db
{
 	"settings" : {
        "index" : {
            "analysis.analyzer.default.type": "ik_max_word"
        }
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

结束!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/神奇cpp/article/detail/914577
推荐阅读
相关标签
  

闽ICP备14008679号