Linux Centos7.5 安装elasticsearch(单机/集群)

Love The Way You Lie 2023-07-12 11:55 61阅读 0赞

一:所需软件

" class="reference-link">202003081605409.png

ps:

1.需要依赖jdk环境(可以参考:Linux Centos7.5 安装配置Oracle jdk1.8)。当前Linux是centos7.5版本;

2.如果是linux centos6.+可以参考:Linux centos6.8 安装配置elasticsearch6.3.2 【单机】(一),Linux centos6.8 安装配置elasticsearch6.3.2 【单机】(二)

二:安装elasticsearch-7.4.2

  1. #解压
  2. tar -zxvf elasticsearch-7.4.2-linux-x86_64.tar.gz
  3. #将文件夹移动到/usr/local目录下
  4. mv elasticsearch-7.4.2 /usr/local
  5. #进入到elasticsearch目录下
  6. cd elasticsearch-7.4.2/
  7. #创建data空文件夹(用于存放数据)
  8. mkdir data
  9. #进入config目录
  10. /cd usr/local/elasticsearch-7.4.2/config
  11. #编辑elasticsearch.yml(elasticsearch的核心配置文件)
  12. vim elasticsearch.yml
  13. 注:如果没有vim命令,可以使用vi命令,或者安装vim

编辑elasticsearch.yml:

  1. #集群名字
  2. cluster.name: lucifer-elasticsearch
  3. #节点
  4. node.name: node-1
  5. #存放数据路径
  6. path.data: /usr/local/elasticsearch-7.4.2/data
  7. #存放日志路径
  8. path.logs: /usr/local/elasticsearch-7.4.2/logs
  9. #设置network.host
  10. network.host: 0.0.0.0
  11. #与node.name一致
  12. cluster.initial_master_nodes: ["node-1"]

编辑jvm.options:

  1. #编辑jvm.options
  2. vim jvm.options
  3. #原本1g修改为:
  4. -Xms256m
  5. -Xmx256m

*ps:whoami命令用于显示自身用户名称.*

问题1:

can not run elasticsearch as root,也就是说不能使用root用户去启动elasticsearch,因为elasticsearch内置的安全性。

20200308153623479.png

解决:

  1. #用于显示当前用户
  2. whoami
  3. #添加用户
  4. useradd esuser
  5. #授权esuser用户拥有elasticsearch-7.4.2目录的权限
  6. chown -R esuser /usr/local/elasticsearch-7.4.2

截图1:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70

问题2:

Cannot open file logs/gc.log due to Permission denied;由于权限被拒绝,无法打开文件日志/gc.log

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 1

解决:

  1. #解决问题
  2. [esuser@localhost bin]$ su root
  3. Password:
  4. [root@localhost bin]# cd ..
  5. [root@localhost elasticsearch-7.4.2]# pwd
  6. /usr/local/elasticsearch-7.4.2
  7. [root@localhost elasticsearch-7.4.2]# chown -R esuser:esuser /usr/local/elasticsearch-7.4.2
  8. #再次使用esuser用户执行elasticsearch命令
  9. [root@localhost elasticsearch-7.4.2]# su esuser
  10. [esuser@localhost elasticsearch-7.4.2]$ cd bin
  11. [esuser@localhost bin]$ ./elasticsearch

问题出现两个:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 2

问题3:

max file descriptors [4096] for elasticsearch process is too low, increase to at least [65535]

  1. [esuser@localhost bin]$ su root
  2. Password:
  3. [root@localhost bin]# vim /etc/security/limits.conf

解决:

ps:需要切换到root的用户,系统文件需要root用户权限才可以修改。

  1. #添加如下内容:
  2. * soft nofile 65536
  3. * hard nofile 65536
  4. * soft nproc 4096
  5. * hard nproc 4096

问题4:

max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]

解决:

  1. #编辑sysctl.conf
  2. [root@localhost bin]# vim /etc/sysctl.conf
  3. [root@localhost bin]# sysctl -p
  4. vm.max_map_count = 262144
  5. [root@localhost bin]# su esuser
  6. [esuser@localhost bin]$ ./elasticsearch

这次启动,正常。

访问浏览器http://192.168.160.130:9200/,可以看到elasticsearch的相关配置信息。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 3

ps: 也可以后台启动elasticsearch ,命令:./elasticsearch -d

  1. [esuser@localhost bin]$ ./elasticsearch -d
  2. future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_11/jre] does not meet this requirement
  3. [esuser@localhost bin]$

可以使用命令查看:jps

20200308161918554.png

或者ps -ef | grep elasticsearch

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 4

三、安装es-header插件

方式一使用谷歌商店提供的es-header插件(需要会科学上网)

附:chrome 网上应用店

插件名:ElasticSearch Head

20200308165357124.png

四、安装ik分词器" class="reference-link">watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 5四、安装ik分词器

1.安装ik分词器

  1. [root@localhost opt]# unzip elasticsearch-analysis-ik-7.4.2.zip -d /usr/local/elasticsearch-7.4.2/plugins/ik
  2. [root@localhost opt]# cd /usr/local/elasticsearch-7.4.2/plugins/ik/
  3. [root@localhost ik]# ls
  4. commons-codec-1.9.jar httpclient-4.5.2.jar
  5. commons-logging-1.2.jar httpcore-4.4.4.jar
  6. config plugin-descriptor.properties
  7. elasticsearch-analysis-ik-7.4.2.jar plugin-security.policy
  8. [root@localhost ik]# su esuser
  9. [esuser@localhost ik]$ jps
  10. 58434 Jps
  11. 39194 Elasticsearch
  12. [esuser@localhost ik]$ kill 39194
  13. [esuser@localhost ik]$ cd /usr/local/elasticsearch-7.4.2/bin
  14. [esuser@localhost bin]$ ./elasticsearch -d
  15. future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_11/jre] does not meet this requirement
  16. [esuser@localhost bin]$ jps
  17. 58507 Elasticsearch
  18. 58526 Jps

ps:安装完ik分词器后,需要重启elasticsearch。

测试:使用postman测试ik分词效果:

ps: ik_max_word 会将文本做最细粒度的划分。

ik_smart 会将文本做最粗粒度的划分。

效果1: ik_max_word:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 6
分词效果:

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

效果2: ik_smart:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 7

  1. {
  2. "tokens": [
  3. {
  4. "token": "中华人民共和国",
  5. "start_offset": 0,
  6. "end_offset": 7,
  7. "type": "CN_WORD",
  8. "position": 0
  9. },
  10. {
  11. "token": "国歌",
  12. "start_offset": 7,
  13. "end_offset": 9,
  14. "type": "CN_WORD",
  15. "position": 1
  16. }
  17. ]
  18. }

2、自定义词库

附:elasticsearch-analysis-ik

2.1

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 8

  1. {
  2. "tokens": [
  3. {
  4. "token": "骚",
  5. "start_offset": 0,
  6. "end_offset": 1,
  7. "type": "CN_CHAR",
  8. "position": 0
  9. },
  10. {
  11. "token": "年在",
  12. "start_offset": 1,
  13. "end_offset": 3,
  14. "type": "CN_WORD",
  15. "position": 1
  16. },
  17. {
  18. "token": "干嘛",
  19. "start_offset": 3,
  20. "end_offset": 5,
  21. "type": "CN_WORD",
  22. "position": 2
  23. }
  24. ]
  25. }

2.2 编辑IKAnalyzer.cfg.xml

  1. [esuser@localhost ~]$ cd /usr/local/elasticsearch-7.4.2/plugins/ik/config
  2. [esuser@localhost config]$ ls
  3. extra_main.dic extra_stopword.dic quantifier.dic
  4. extra_single_word.dic IKAnalyzer.cfg.xml stopword.dic
  5. extra_single_word_full.dic main.dic suffix.dic
  6. extra_single_word_low_freq.dic preposition.dic surname.dic
  7. [esuser@localhost config]$ su root
  8. Password:
  9. [root@localhost config]# vim IKAnalyzer.cfg.xml

IKAnalyzer.cfg.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
  3. <properties>
  4. <comment>IK Analyzer 扩展配置</comment>
  5. <!--用户可以在这里配置自己的扩展字典 -->
  6. <entry key="ext_dict">custom.dic</entry>
  7. <!--用户可以在这里配置自己的扩展停止词字典-->
  8. <entry key="ext_stopwords"></entry>
  9. <!--用户可以在这里配置远程扩展字典 -->
  10. <!-- <entry key="remote_ext_dict">words_location</entry> -->
  11. <!--用户可以在这里配置远程扩展停止词字典-->
  12. <!-- <entry key="remote_ext_stopwords">words_location</entry> -->
  13. </properties>

ps:这里的custom.dic是自己的词库。

  1. [root@localhost config]# vim custom.dic
  2. [root@localhost config]# ls
  3. custom.dic extra_stopword.dic stopword.dic
  4. extra_main.dic IKAnalyzer.cfg.xml suffix.dic
  5. extra_single_word.dic main.dic surname.dic
  6. extra_single_word_full.dic preposition.dic
  7. extra_single_word_low_freq.dic quantifier.dic
  8. [root@localhost config]# cd ..
  9. [root@localhost ik]# cd /usr/local/elasticsearch-7.4.2/bin
  10. [root@localhost bin]# su root
  11. [root@localhost bin]# su esuser
  12. [esuser@localhost bin]$ jps
  13. 58938 Jps
  14. 58507 Elasticsearch
  15. [esuser@localhost bin]$ kill 58507
  16. [esuser@localhost bin]$ jps
  17. 59034 Jps
  18. [esuser@localhost bin]$ ./elasticsearch -d
  19. future versions of Elasticsearch will require Java 11; your Java version from [/usr/local/jdk1.8.0_11/jre] does not meet this requirement

ps:custom.dic内容如下:

20200308181651314.png

重启elasticsearch后:

再次测试,”骚年“两个字已经变成了一个词了。

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 9

以上部分是单机。

================================搭建集群====================================

以下部分就是改造为集群模式。

五、搭建集群

20200308190118411.png




















虚拟机 ip地址
01 192.168.160.130
01-1 192.168.160.133
01-2 192.168.160.134

ps:01-1,01-2为虚拟机01的克隆虚拟机。

ps:由于是克隆虚拟机,所以在每一台虚拟机中都删除cd /usr/local/elasticsearch-7.4.2/data的nodes文件夹中所有文件。

5.1 删除data文件夹下notes文件数据(三台虚拟机都需要删除)

  1. [root@localhost ~]# cd /usr/local/elasticsearch-7.4.2/data
  2. [root@localhost data]# ls
  3. nodes
  4. [root@localhost data]# rm -rf nodes/
  5. [root@localhost data]# ls
  6. [root@localhost data]#

5.2 编辑elasticsearch.yml(三台虚拟机都需要配置)

192.168.160.130:

  1. [root@localhost config]# vim elasticsearch.yml
  2. [root@localhost config]# more elasticsearch.yml | grep ^[^#]
  3. cluster.name: lucifer-es-cluster
  4. node.name: node-1
  5. path.data: /usr/local/elasticsearch-7.4.2/data
  6. path.logs: /usr/local/elasticsearch-7.4.2/logs
  7. network.host: 0.0.0.0
  8. http.cors.enabled: true
  9. http.cors.allow-origin: "*"
  10. node.master: true
  11. node.data: true
  12. discovery.seed_hosts: ["192.168.160.130","192.168.160.133","192.168.160.134"]
  13. cluster.initial_master_nodes: ["node-1"]

ps: more elasticsearch.yml | grep ^[^#] 表示查看elasticsearch.yml中除去#注释的配置

192.168.160.133;192.168.160.134这两台虚拟机elasticsearch.yml大致相同,除了node.name。192.168.160.130==》node.name: node-1;192.168.160.133==》node.name: node-2;92.168.160.134==》node.name: node-3;

再次切换为esuser用户,启动elasticsearch;

ps:

如果遇到如下报错信息:**java.io.FileNotFoundException: /usr/local/elasticsearch-7.4.2/logs/lucifer-es-cluster_index_indexing_slowlog.json (Permission denied)**

解决:删除logs文件夹下所有文件

  1. [esuser@localhost elasticsearch-7.4.2]$ cd logs
  2. [esuser@localhost logs]$ pwd
  3. /usr/local/elasticsearch-7.4.2/logs
  4. [esuser@localhost logs]$ rm -rf *

三台虚拟机均启动成功后,访问浏览器:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 10

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 11

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 12

用Elasticsearch Head查看es集群信息:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM3NDk1Nzg2_size_16_color_FFFFFF_t_70 13

发表评论

表情:
评论列表 (有 0 条评论,61人围观)

还没有评论,来说两句吧...

相关阅读

    相关 elasticsearch安装

    1.假设已经准备了三台linux机器(可以采用虚拟机virtualbox安装,并且以桥接方式配置网络,使得三台linux机器都有不同的局域网ip)。在每台机器的/etc/hos