Elasticsearch 安装(Linux)

这篇具有很好参考价值的文章主要介绍了Elasticsearch 安装(Linux)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

概念

ES是一款分布式全文搜索引擎,基于Lucene,进行了二次封装,更容易上手。

安装

基于Java环境,最好提前安装好Java环境,有一个自带的jdk,但是版本可能不是其他组件需要的。
我们这里基于虚拟机来安装 es

安装es

  • 下载官网
    手动下载或者 curl 直接下载
    官网可能会比较慢,国内也有镜像站 华为
    这是ES历史版本
curl -O https://repo.huaweicloud.com/elasticsearch/7.14.0/elasticsearch-7.14.0-linux-x86_64.tar.gz
  • es放入 opt 目录下(个人习惯)
  • 解压
tar zxvf /opt/elasticsearch-7.14.0-linux-x86_64.tar.gz 
  • 启动

    • 启动

      ./bin/elasticsearch
      

      报错,新版本的es不允许以 root 启动,

      		[ERROR][o.e.b.ElasticsearchUncaughtExceptionHandler] [origin.centos] uncaught exception in thread [main]
      org.elasticsearch.bootstrap.StartupException: java.lang.RuntimeException: can not run elasticsearch as root
              at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:163) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116) ~[elasticsearch-cli-7.14.0.jar:7.14.0]
              at org.elasticsearch.cli.Command.main(Command.java:79) ~[elasticsearch-cli-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81) ~[elasticsearch-7.14.0.jar:7.14.0]
      Caused by: java.lang.RuntimeException: can not run elasticsearch as root
              at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:399) ~[elasticsearch-7.14.0.jar:7.14.0]
              at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159) ~[elasticsearch-7.14.0.jar:7.14.0]
              ... 6 more
      uncaught exception in thread [main]
      java.lang.RuntimeException: can not run elasticsearch as root
              at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:103)
              at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:170)
              at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:399)
              at org.elasticsearch.bootstrap.Elasticsearch.init(Elasticsearch.java:159)
              at org.elasticsearch.bootstrap.Elasticsearch.execute(Elasticsearch.java:150)
              at org.elasticsearch.cli.EnvironmentAwareCommand.execute(EnvironmentAwareCommand.java:75)
              at org.elasticsearch.cli.Command.mainWithoutErrorHandling(Command.java:116)
              at org.elasticsearch.cli.Command.main(Command.java:79)
              at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:115)
              at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:81)
      For complete error details, refer to the log at /opt/elasticsearch-7.14.0/logs/elasticsearch.log
      
    • 这里为其创建一个用户 elastic

      useradd elastic
      
    • 设置密码

      passwd elastic
      

      根据提示设置完密码

    • 目录授权

      chown -R elastic /opt/elasticsearch-7.14.0
      
    • 创建es 存储日志及数据的目录

      mkdir -p /data/es
      chown -R elastic /data/es
      mkdir -p /var/log/es
      chown -R elastic /var/log/es
      
    • 修改 elasticsearch.yml 配置日志及数据目录,位于 Paths 节点下

      # ----------------------------------- Paths ------------------------------------
      #
      # Path to directory where to store the data (separate multiple locations by comma):
      #
      path.data: /data/es
      #
      # Path to log files:
      #
      path.logs: /var/log/es
      #
      
    • 切换用户

      su elastic 
      
    • 再启动

      ./bin/elasticsearch
      

      启动成功,但是有警告信息 Elasticsearch 安装(Linux)
      这个放到后面再说

  • 访问ES
    我们先在虚拟机本地访问,可以看到成功访问到

    curl localhost:9200
    {
     "name" : "origin.centos",
     "cluster_name" : "elasticsearch",
     "cluster_uuid" : "XVgPBZ78RdWRssPtuSeJTg",
     "version" : {
       "number" : "7.14.0",
       "build_flavor" : "default",
       "build_type" : "tar",
       "build_hash" : "dd5a0a2acaa2045ff9624f3729fc8a6f40835aa1",
       "build_date" : "2021-07-29T20:49:32.864135063Z",
       "build_snapshot" : false,
       "lucene_version" : "8.9.0",
       "minimum_wire_compatibility_version" : "6.8.0",
       "minimum_index_compatibility_version" : "6.0.0-beta1"
     },
     "tagline" : "You Know, for Search"
    }
    

    然后我们在宿主机访问 虚拟机ip:9200 发现访问不了;
    其实在虚拟机 通过ip也访问不了

    [root@origin ~]# curl 192.168.0.101:9200
    curl: (7) Failed connect to 192.168.0.101:9200; Connection refused
    

    这是因为,ES默认,只能通过本地回环地址访问

  • 修改ES网络配置

    vim /opt/elasticsearch-7.14.0/config/elasticsearch.yml
    
    network.host: 0.0.0.0
    

    保存退出

  • 再启动ES

    ./bin/elasticsearch
    

    会发现,报错咯,大概意思是要解决以下这三个问题才能启动
    Elasticsearch 安装(Linux)

    • 第一个
      max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
      则需要配置 elasticsearch 进程,里面以是用户的角度去配置的 可打开的最大文件数
      vim /etc/security/limits.conf
      
      # 用户名 elastic ,不限制用户 用 * 替代
      elastic soft nofile 65536
      elastic hard nofile 65536
      
    • 第二个
      max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
      这个值是系统层面的,和用户进程没啥关系
      vim /etc/sysctl.conf
      
      vm.max_map_count = 262144
      
      保存退出。
      刷新配置
      sysctl -p
      
    • 第三个
      the default discovery settings are unsuitable for production use; at least one of [discovery.seed_hosts, discovery.seed_providers, cluster.initial_master_nodes] must be configured
      大概意思是,默认集群节点发现(这就是由于上面开启其他主机访问的缘故)配置不适用于生产环境,至少配置以下一项。
      修改配置文件,这里设置 discovery.seed_hosts 这个属性
      vim /opt/elasticsearch-7.14.0/config/elasticsearch.yml
      
      # 本机ip
      discovery.seed_hosts: ["192.168.0.101"]
      
  • 再次启动ES

    ./bin/elasticsearch
    

    到这里,我已经能够在其他主机上通过ip访问 ES了
    Elasticsearch 安装(Linux)

后台启动 & 停止

启动

  • nohup ./bin/elasticsearch > /dev/null 2>&1 &
  • nohup /opt/elasticsearch-7.14.0/bin/elasticsearch > /dev/null 2>&1 &
  • ./bin/elasticsearch -d -p pid(记录pid的一个文件,可以用于脚本管理启停) #相对路径
  • /opt/elasticsearch-7.14.0/bin/elasticsearch -d #绝对路径
nohup 记录pid

路径既可以是相对路径也可以是绝对路径

nohup /opt/elasticsearch-7.14.0/bin/elasticsearch >/dev/null 2>&1 & echo $! > pid

nohup /opt/elasticsearch-7.14.0/bin/elasticsearch >/dev/null 2>&1 & echo $! > /opt/elasticsearch-7.14.0/pid

停止

kill [-9] pid
kill cat pid(启动时记录pid的文件)
cat pid(启动时记录pid的文件) | xargs kill [-9]

开机启动

  1. 在 /etc/systemd/system 目录下新建 elasticsearch.service 文件
    输入以下内容
[Unit]
Description=elasticsearch
[Service]
User=elastic
LimitNOFILE=100000
LimitNPROC=100000
# 启动命令 es 脚本位置
ExecStart=/opt/elasticsearch-7.14.0/bin/elasticsearch
# 停止命令 获取进程id,然后停止。也可以在启动时,将pid写入文件,这里直接读取文件即可
ExecStop=ps -ef|grep elasticsearch | grep -v grep | awk '{print $2}' | xargs kill
[Install]
# 无图形界面运行
WantedBy=multi-user.target
# 有图形界面运行
# graphical.target
  1. 赋予可执行权限及所属权限
chmod 754 elasticsearch.service
  1. 重新加载 systemd 配置
systemctl daemon-reload
  1. 启动es
systemctl start elasticsearch
  1. 停止es
systemctl stop elasticsearch

其他启动错误

max number of threads

max number of threads [3818] for user [elastic] is too low, increase to at least [4096] 类似问题,则需要配置 当前用户启动的进程允许开启多少个线程

vim /etc/security/limits.conf
# 用户名 elastic ,不限制用户 用 * 替代
elastic soft nproc 4096
elastic hard nproc 4096

内存不足 Cannot allocate memory

将ES所需内存调小后,再启动ES。

vim ./config/jvm.options

-Xms2g
-Xmx2g

failed to obtain node locks

这是由于当前节点上已经有ES实例绑定了数据目录。
此时要看是否确实需要在节点上运行多个实例。
如果需要

  • 则修改配置文件 elasticsearch.yml
    配置当前节点可以运行的es实例数
node.max_local_storage_nodes: 2

否则,需停止当前正在运行的ES进程,再启动。文章来源地址https://www.toymoban.com/news/detail-497436.html

到了这里,关于Elasticsearch 安装(Linux)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 分布式系统概念和设计——分布式共享内存

    分布式系统概念和设计——分布式共享内存

    分布式共享内存 分布式共享内存是在不共享物理内存的计算机之间实现数据的共享的一个抽象。 有一个底层运行的系统保证其透明性,但是进程还是根据内存的分布处理物理内存的分布式能力 DMS最关键点: 不需要关心数据的通信,消息传递能力是巨大的底层支持。 生存周

    2024年02月10日
    浏览(9)
  • 大数据学习初级入门教程(十七) —— Elasticsearch 8.7.0 完全分布式集群的安装、配置、启动和测试

    大数据学习初级入门教程(十七) —— Elasticsearch 8.7.0 完全分布式集群的安装、配置、启动和测试

    好久没用 Elasticsearch 集群了,参考以前写的《大数据学习初级入门教程(八) —— Elasticsearch 7.6.2 单节点的安装、启动和测试_elasticsearch 7.6.2需要专属网络_孟郎郎的博客-CSDN博客》、《大数据学习初级入门教程(九) —— Elasticsearch 7.6.2 伪分布式集群的安装、配置、启动和测

    2024年02月04日
    浏览(10)
  • 分布式锁实现(mysql,以及redis)以及分布式的概念

    分布式锁实现(mysql,以及redis)以及分布式的概念

    我旁边的一位老哥跟我说,你知道分布式是是用来干什么的嘛?一句话给我干懵了,我能隐含知道,大概是用来做分压处理的,并增加系统稳定性的。但是具体如何,我却道不出个1,2,3。现在就将这些做一个详细的总结。至少以后碰到面试官可以说上个123。 那么就正式进入

    2024年01月21日
    浏览(12)
  • 分布式概念

    分布式概念

    1.1 CAP定理   在分布式系统中,一个Web应用最多只能同时支持的两个属性: 一致性(C): 在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本) 可用性(A): 在集群中一部分节点故障后,集群整体是否还能响应客户

    2024年01月19日
    浏览(7)
  • 分布式基础概念

    分布式基础概念

    微服务架构风格,就是把一个单体架构按照业务拆分成多个服务模块,每个模块之间独立部署运行、互不影响,并使用轻量级机制通信,通常是 HTTP API。 集群是个物理形态,分布式是个工作方式。 只要是一堆机器,就可以叫集群,他们是不是一起协作着干活,这个谁也不知

    2024年02月07日
    浏览(6)
  • Linux-一篇文章,速通Hadoop集群之伪分布式,完全分布式,高可用搭建(附zookeeper,jdk介绍与安装)。

    Linux-一篇文章,速通Hadoop集群之伪分布式,完全分布式,高可用搭建(附zookeeper,jdk介绍与安装)。

    文章较长,附目录,此次安装是在VM虚拟环境下进行。文章第一节主要是介绍Hadoop与Hadoop生态圈并了解Hadoop三种集群的区别,第二节和大家一起下载,配置Linux三种集群以及大数据相关所需的jdk,zookeeper,只需安装配置的朋友可以直接跳到文章第二节。同时,希望我的文章能帮

    2024年03月19日
    浏览(11)
  • 单机,集群和分布式概念

    1.受限于硬件资源,单机所能承受的用户并发量太少; 2.一个系统有多个模块,任意模块的修改都会导致整个项目代码重新编译、部署; 3.系统中,有些模块是CPU密集型,有些模块是I/O密集型,造成各个模块对于硬件资源的需求是不一样的。 负载均衡        集群的优点

    2024年02月14日
    浏览(12)
  • LVS集群和分布式概念

    LVS 在计算机领域,集群早在 1960 年就出现,随着互联网和计算机相关技术的发展,现在 集群这一技术已经在各大互联网公司普及。 1.1.1 集群概念 计算机集群指一组通过计算机网络连接的计算机,它们一起工作,在许多方面,它们可以 被视为一个单一的系统。与网格计算机

    2024年02月10日
    浏览(7)
  • 分布式消息中间件概念

    分布式消息中间件概念

        对于分布式消息中间件,首先要了解两个基础的概念,即什么是分布式系统,什么又是中间件。       分布式系统   “A distributed system is one in which components located at networked computers communicate and coordinate their actions only by passing messasges.”——《Distributed Systems Concepts and Desig

    2023年04月27日
    浏览(8)
  • VMware创建Linux虚拟机之(四)ZooKeeper&HBase完全分布式安装

    VMware创建Linux虚拟机之(四)ZooKeeper&HBase完全分布式安装

    Hello,world!    🐒本篇博客使用到的工具有:VMware16 ,Xftp7 若不熟悉操作命令,推荐使用带GUI页面的CentOS7虚拟机 我将使用带GUI页面的虚拟机演示 虚拟机(Virtual Machine) 指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算

    2024年02月07日
    浏览(18)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包