Elasticsearch 安装(Linux)

ElasticSearch

    • 概念
    • 安装
      • 安装es
    • 后台启动 & 停止
      • 启动
        • nohup 记录pid
      • 停止
    • 其他启动错误
      • max number of threads
      • 内存不足 Cannot allocate memory
      • failed to obtain node locks

概念

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
      

      启动成功,但是有警告信息 在这里插入图片描述
      这个放到后面再说

  • 访问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
    

    会发现,报错咯,大概意思是要解决以下这三个问题才能启动
    在这里插入图片描述

    • 第一个
      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了
    在这里插入图片描述

后台启动 & 停止

启动

  • 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]

其他启动错误

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进程,再启动。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/31545.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ElasticSearch-安装Head可视化插件

安装Head可视化插件 首先需要依赖node.js和npm环境 1 安装node.js 官方下载地址:http://nodejs.cn/download/ 下载LTS版本(长期稳定版本) 安装可以更改安装路径,其余的都是选择 下一步傻瓜是安装 安装成功后如下 命令测试 node -v 查看node的版本 n…

Redis 2023面试5题(二)

一、Redis key没设置过期时间却被redis主动删除了 如果一个 Redis 键没有设置过期时间,那么 Redis 无法判断该键是否应该自动删除。因此,如果一个没有设置过期时间的键被 Redis 主动删除了,可能是以下原因之一: 内存不足&#x…

【论文笔记】BEIT:BERT PRE-TRAINING OF IMAGE TRANSFORMERS

GitHub 1.介绍 1.1 挑战 视觉转换器的输入单元,即图像补丁,没有预先存在的词汇。预测遮罩面片的原始像素往往会在预训练短程依赖性和高频细节上浪费建模能力 1.2 回顾一下Bert的基本架构和流程 输入编码:通过tokenizer将输入的文本中的每…

OceanBase—01(入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式)

OceanBase—01(入门篇——使用docker安装OceanBase以及介绍连接OB的几种方式) 1. 前言1.1 安装部署参考1.1.1 安装前提1.1.2 参考 1.1 修改数据库用户名密码1.2 总结常见连接命令 2. 安装部署OceanBase2.1 启动 OceanBase 数据库实例2.1.1 拉取镜像并启动…

eclipse (C/C++) 常用设置记录

Eclipse 是一个开放源代码的、基于Java的可扩展开发平台;现公司用其作为开发单片机的IDE;因此记录一下常用的配置方法; 文章目录 零、常用默认快捷键一、高亮相同变量二、修改高亮变量颜色三、在整个工程内搜索某个函数四、切换主题五、改变字…

编译原理笔记16:自下而上语法分析(3)构造 DFA、DFA 对下一步分析的指导(有效项目)

目录 由 NFA 用子集法构造 DFA由 LR(0) 项目直接构造识别活前缀的 DFA构造 DFA求拓广文法 GCLOSURE & GO例: 构造 DFA DFA 指导下一步分析有效项目 看了前面的内容,我们已经了解到:分析表和驱动器算法,是 LR 分析器的核心。 …

基于Java+Swing+Mysql实现图书管理系统V2.0

基于JavaSwingMysql实现图书管理系统V2.0 一、系统介绍二、功能展示1.项目内容2.项目骨架3.数据库表4.主界面5.添加6、修改7、查询8、删除 四、其它1.其他系统实现五.获取源码 一、系统介绍 本系统主要有对图书信息的增删改查操作功能。 项目类型:Java SE项目&…

linux 下查看 USB 设备

文章目录 前言目录内容详解usb11-0:1.01-1.1:1.0 结构图设备信息bDeviceClassversionbusnum & devnumdevbMaxPoweridVendor & idProductproductmanufacturerbcdDevicespeedueventbmAttributesdrivers_autoprobe 前言 在 sysfs 文件系统下,查看 USB 设备&am…

Android 9-SystemUI:(1)启动流程

具体分析(以下代码示例,讲解,都是通过,Android9代码来举例) SystemUI,其实是可以看作是一个系统级的服务,也就是SystemUIService, SystemUI的服务启动,要从SystemServer.run()方法入手 main 方法里启动了…

企业级微服务架构实战项目--xx优选3-mq+nacos+es实现上下架

一 nacosmqes实现上下架 1.1 架构图 1.2 工程结构 1.3 核心代码流程 1.3.1 请求product模块 2.修改数据库,推送rabbitmq中 1.3.2 rabbitmq的工具类 1.3.3 search模块中rabbit客户端订阅信息 1.监听器监听信息 2.调用相应的上下架方法 2.1 调用product模块&…

Flink 学习三 Flink 流 process function API

Flink 学习三 Flink 流&process function API 1.Flink 多流操作 1.1.split 分流 (deprecated) 把一个数据流根据数据分成多个数据流 1.2 版本后移除 1.2.分流操作 (使用侧流输出) public class _02_SplitStream {public static void main(String[] args) throws Excep…

uniapp设置滚动条滚动到指定位置

场景:左侧菜单栏,每次切换时,需要右侧商品展示区保持滚动条及页面在最顶部 1.利用scroll-view 中scroll-top属性实现 1.1设置scrollToTop属性为0 data() {return {// 保证每次切换,滚动条位置都在最顶部scrollToTop: 0,}; } 1.…

ansible的剧本(playbook)

一、playbooks 概述以及实例操作 1、playbooks 的组成 playbooks 本身由以下各部分组成 (1)Tasks:任务,即通过 task 调用 ansible 的模板将多个操作组织在一个 playbook 中运行 (2)Variables&#xff1…

iOS 单元测试之常用框架 OCMock 详解 | 京东云技术团队

一、单元测试 1.1 单元测试的必要性 测试驱动开发并不是一个很新鲜的概念了。在日常开发中,很多时候需要测试,但是这种输出是必须在点击一系列按钮之后才能在屏幕上显示出来的东西。测试的时候,往往是用模拟器一次一次的从头开始启动 app&a…

团体程序设计天梯赛-练习集L2篇④

🚀欢迎来到本文🚀 🍉个人简介:Hello大家好呀,我是陈童学,一个与你一样正在慢慢前行的普通人。 🏀个人主页:陈童学哦CSDN 💡所属专栏:PTA 🎁希望各…

模糊聚类在负荷实测建模中的应用(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

VSCode使用CodeWhisperer(AI编程)

安装AWS Toolkit插件,点击侧边插件搜索并安装 2.点击aws ->CodeWhisperer ->Start 3.在下拉菜单中点击Use a personal email to sign up and sign in with AWS Builder ID 4.点Copy Code and Proceed,这会自动复制一些东西 5. 收到提示打开外部网…

【跑实验05】利用CLIP中的图像编码器,如何遍历文件夹中的图像,将图像文件改为28*28的尺寸,然后输出到excel中的每一列,最后一列全都标记为0

文章目录 一、初步实现二、警告信息的解决三、Excel的限制四、尝试解决 一、初步实现 要遍历文件夹中的图像并将其尺寸调整为28x28,并将结果输出到Excel中,可以按照以下步骤进行操作: 首先,确保您已经安装了Pandas库&#xff0c…

“插入排序:小数据量排序的王者“

文章目录 🔍什么是插入排序?🔑插入排序的优缺点🚀实现插入排序 🔍什么是插入排序? 插入排序是一种简单的排序算法,它的基本思想是:将待排序的元素,从第二个元素开始&…

Adobe Creative Cloud 摄影计划 - 当图像与想象力相遇。 PS+LRc套餐 国际版 1年订阅/398

这里重点介绍国际版摄影计划套餐详情: 国际版包括:Photoshop、Lightroom Classic、Photoshop Express、Lightroom Mobile、Lightroom、云服务。中国版包括:Photoshop、Lightroom Classic、Photoshop Express、Lightroom Mobile 桌面应用程序…