• Linux搭建elasticsearch-7.8.0单机版本


      😊 @ 作者: 一恍过去
      🎊 @ 社区: Java技术栈交流
      🎉 @ 主题: Linux搭建elasticsearch-7.8.0单机版本
      ⏱️ @ 创作时间: 2022年07月30日

      1、新建账户

      出于安全考虑,elasticsearch默认不允许以root账号运行,所以需要新增账户

      创建用户:

      useradd es
      
      • 1

      设置密码:

      passwd es
      
      • 1

      切换用户:

      su - es
      
      • 1

      2、上传安装包

      我们将安装包上传到指定目录,比如/home/soft/elasticsearch,并且完成解压。

      tar -zxvf elasticsearch-7.8.0-linux-x86_64.tar.gz
      
      • 1

      解压后目录结果如下:
      在这里插入图片描述

      3、修改配置

      我们进入config目录:

      cd config
      
      • 1

      需要修改的配置文件有两个:jvm.options、elasticsearch.yml

      1、jvm.options

      Elasticsearch基于Lucene的,而Lucene底层是java实现,如果有需要可以配置jvm参数。

      编辑jvm.options:

      vim jvm.options
      
      • 1

      默认配置如下(可根据服务器内部大小进行修改):

      -Xms1g
      -Xmx1g
      
      • 1
      • 2

      2、elasticsearch.yml

      vim elasticsearch.yml
      
      • 1

      2.1、修改数据和日志目录:
      elasticsearch解压目录(elasticsearch-7.8.0)中创建datalogs目录

      mkdir data -p
      mkdir logs-p
      
      • 1
      • 2

      在这里插入图片描述

      配置日志及数据目录

      path.data: /home/soft/elasticsearch/elasticsearch-7.8.0/data # 数据目录位置
      path.logs: /home/soft/elasticsearch/elasticsearch-7.8.0/logs # 日志目录位置
      
      • 1
      • 2

      在这里插入图片描述
      2.2、修改绑定的ip:

      network.host: 0.0.0.0 # 绑定到0.0.0.0,允许任何ip来访问
      
      • 1

      在这里插入图片描述

      2.3、修改节点绑定:

      node.name: node-1
      
      #cluster.initial_master_nodes: ["node-1", "node-2"]
      cluster.initial_master_nodes: ["node-1"]
      
      #discovery.seed_hosts: ["host1", "host2"]
      discovery.seed_hosts: ["127.0.0.1"]
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      在这里插入图片描述
      2.4、允许跨域:

      # 在文件最后追加
      http.cors.enabled: true
      http.cors.allow-origin: "*"
      
      • 1
      • 2
      • 3

      2.5、其他配置说明

      elasticsearch.yml的其它可配置信息:

      属性名说明
      cluster.name配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
      node.name节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
      path.conf设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch
      path.data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
      path.logs设置日志文件的存储路径,默认是es根目录下的logs文件夹
      path.plugins设置插件的存放路径,默认是es根目录下的plugins文件夹
      bootstrap.memory_lock设置为true可以锁住ES使用的内存,避免内存进行swap
      network.host设置bind_host和publish_host,设置为0.0.0.0允许外网访问
      http.port设置对外服务的http端口,默认为9200。
      transport.tcp.port集群结点之间通信端口
      discovery.zen.ping.timeout设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些
      discovery.zen.minimum_master_nodes主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2

      3、启动

      进入bin目录,执行./elasticsearch

      # bin目录
      cd /home/soft/elasticsearch/elasticsearch-7.8.0/bin
      
      
      # 窗口启动
      ./elasticsearch
      # 后台启动
      ./elasticsearch -d -p pid 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8

      启动时可以先以窗口启动方式,如果es启动时没有报错,那么再通过后台启动

      在这里插入图片描述
      可以看到绑定了两个端口:

      • 9300:集群节点间通讯接口
      • 9200:客户端访问接口

      我们在浏览器中访问:http://ip:9200/
      在这里插入图片描述

      4、运行可能出现的错误集

      错误1:内核过低

      在这里插入图片描述

      如果使用的是centos6,其linux内核版本为2.6。而Elasticsearch的插件要求至少3.5以上版本。不过没关系,我们禁用这个插件即可。

      修改elasticsearch.yml文件,在最下面添加如下配置:

      bootstrap.system_call_filter: false
      
      • 1

      然后重启ES

      错误2:文件权限不足- 1

      (img-2MW5Jran-1658764136382)(./assets/1528599116836.png)

      [1]: max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536]
      
      • 1

      解决步骤:

      1、首先用root用户登录

      2、然后修改配置文件:

      vim /etc/security/limits.conf
      
      • 1

      3、添加下面的内容:

      * soft nofile 65536
      
      * hard nofile 131072
      
      * soft nproc 4096
      
      * hard nproc 4096
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7

      错误3:es文件操作权限不足 - 2

      错误提示出现:java.nio.file.AccessDeniedException: /usr/local/elk/elasticsearch/config/jvm.options

      使用root账户给操作ES的用户赋予elasticsearch下所有文件的权限

      # /home/soft/elasticsearch为解压后的路径
      chown -R es:es  /home/soft/elasticsearch
      
      • 1
      • 2

      错误4:线程数不够

      错误提示:[1]: max number of threads [1024] for user [es] is too low, increase to at least [4096]
      
      • 1

      修改配置:

      vim /etc/security/limits.d/X-nproc.conf 
      
      • 1

      修改下面的内容:

      * soft nproc 1024
      
      • 1

      改为:

      * soft nproc 4096
      
      • 1

      错误5:进程虚拟内存

      错误提示:[2]: max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
      
      • 1

      vm.max_map_count:限制一个进程可以拥有的VMA(虚拟内存区域)的数量,修改配置文件 :

      vim /etc/sysctl.conf 
      
      • 1

      添加下面内容:

      vm.max_map_count=655360
      
      • 1

      然后执行命令:

      sysctl -p
      
      • 1

      重启终端窗口

      所有错误修改完毕,一定要重启你的 Xshell终端,否则配置无效。

      5、配置开机自启

      创建自启文件:

      vim /etc/init.d/elasticsearch
      
      • 1

      内容如下:

      脚本执行的用户名为 ‘es’,通过su es切换;

      #!/bin/sh
      #chkconfig: 2345 80 05
      #description: elasticsearch
      
      case "$1" in
      start)
          su es<<!
          cd /home/soft/elasticsearch/elasticsearch-7.8.0/
          ./bin/elasticsearch -d
      !
          echo "elasticsearch startup"
          ;;
      stop)
          es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
          kill -9 $es_pid
          echo "elasticsearch stopped"
          ;;
      restart)
          es_pid=`ps aux|grep elasticsearch | grep -v 'grep elasticsearch' | awk '{print $2}'`
          kill -9 $es_pid
          echo "elasticsearch stopped"
          su es<<!
          cd /home/soft/elasticsearch/elasticsearch-7.8.0/
          ./bin/elasticsearch -d
      !
          echo "elasticsearch startup"
          ;;
      *)
          echo "start|stop|restart"
          ;;
      esac
      
      exit $?
      
      • 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

      增加执行权限:

      chmod +x /etc/init.d/elasticsearch
      
      • 1

      配置开机启动:

      # 添加到系统Service
      chkconfig --add elasticsearch
      systemctl daemon-reload
      
      # 查看是否添加成功
      chkconfig --list
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      操作:

      # 启动
      service elasticsearch start
      # 关闭
      service elasticsearch  stop
      # 重启
      service elasticsearch restart 
      
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6

      6、安装I中文K分词器

      下载地址:https://github.com/medcl/elasticsearch-analysis-ik/releases
      下载的版本需要与es版本一致;

      1、上传文件:
      elasticsearch-analysis-ik-7.8.0.zip上传到home/soft/elasticsearch/elasticsearch-7.8.0/plugins目录

      2、解压文件:

      # 如果unzip命令不存在,则安装:yum install unzip
      unzip elasticsearch-analysis-ik-7.8.0.zip -d ik-analyzer
      
      # 解压完成后,删除`elasticsearch-analysis-ik-7.8.0.zip`压缩包
      rm elasticsearch-analysis-ik-7.8.0.zip -rf
      
      • 1
      • 2
      • 3
      • 4
      • 5

      在这里插入图片描述
      3、重启:

      在安装好IK分词插件后,需要重启es

      # 关闭
      service elasticsearch  stop
      
      # 启动
      service elasticsearch start
      
      • 1
      • 2
      • 3
      • 4
      • 5

      4、测试:
      使用postMan工具,发起请求,测试分词是否有效;

      首先使用标准分词器,请求json如下:

      {
        "analyzer": "standard",
        "text":     "测试分词器"
      }
      
      • 1
      • 2
      • 3
      • 4

      在这里插入图片描述

      可以看到,查询出的内容,每个文字都是单独的,不会组成一个

      首先使用IK分词器,请求json如下:

      {
        "analyzer": "ik_max_word",
        "text":     "测试分词器"
      }
      
      • 1
      • 2
      • 3
      • 4

      在这里插入图片描述

      可以看到,查询出的内容,进行了中文形式的分词

    • 相关阅读:
      zynq平台移植python3.10.5
      【HDFS】cachingStrategy的设置
      彻底搞懂硬盘相关的概念
      Springboot 集成WebSocket作为客户端,含重连接功能,开箱即用
      C++项目实战--线程池代码讲解
      【VUE复习·4】计算属性computed:原理、完整写法(不常用)、与 methods 的区别、简写(最常用)、应用案例!
      大二Web课程设计:HTML+CSS学校静态网页设计——南京师范大学泰州学院(11页)
      PPT模板分享,教学课件模板免费下
      初入职场两三事【研发篇】
      【数据结构(邓俊辉)学习笔记】二叉搜索树03——平衡
    • 原文地址:https://blog.csdn.net/zhuocailing3390/article/details/125985525