elasticsearch在ubuntu下的配置以及简单使用

参考资料

官方下载地址
ELK学习实验002:Elasticsearch介绍及单机安装
ElasticSearch (ES从入门到精通一篇就够了)

前言

警告:elasticsearch默认不允许使用root账号来运行的,所以,强烈建议一开始就创建一个账号例如:es用于对elastic的部署。

给elastic创建账号

  1. 创建es用户组及es用户、并设置密码
powershell 复制代码
groupadd es
### 下面的命令表示,创建esgroup下一个账号,叫es,然后自动创建对应的账号目录以及使用的shell命令。
useradd es -g es -m -s /bin/bash
passwd es

测试\]切换账号es看是否正常: ```powershell su es cd ~/ pwd ``` 有: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/b20ebc7e3b3c46eb0f291278197ca4e3.webp) 可以看到能够成功切换,且有自己的用户目录。 用户目录为: /home/es 接下来,给es添加sudo权限: ```powershell vim /etc/sudoers 然后添加: es ALL=(ALL:ALL) ALL ``` 如下图: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/3a9d8a84c40b629748de00c0ed5b6e03.webp) 按wq! 进行强制保存,然后再测试一下: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/c039abac32d32d4aa3e63643208af4c7.webp) 好了, 2. 更改es文件夹及内部文件的所属用户及组为es:es 在elasticsearch根目录执行此命令: ```powershell ## 我这里用的是root直接赋予权限 ~/software/# chown -R es:es elastic ``` 3. 切换到es用户再启动 ```powershell su es ./bin/elasticsearch -d ``` 出现: ```powershell ./elasticsearch-env: line 86: cd: /root/software/elastic/config: Permission denied ./elasticsearch-env: line 90: cd: /root/software/elastic: Permission denied ``` 这种问题 这是。。新版本V8的问题吗?问题吗? 下面也顺便解决下: ### 部署以及安装单机版本 ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/892d780890a498b0cf10cdde89fddd28.webp) 上传到服务器ftp上面。然后,解压缩: ```powershell 注意,请使用es账号来操作以及解压缩。 首先: su es 然后, es@toowhite-MS-7D48:~$ mkdir software es@toowhite-MS-7D48:~$ cd software/ es@toowhite-MS-7D48:~/software$ sudo cp /root/software/elasticsearch-8.12.0-linux-x86_64.tar.gz ./ ls 然后看到: ``` ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/d02dff451ada1f1b4201be5a8cb0a842.webp) ```powershell 解压缩: tar -xf elasticsearch-8.12.0-linux-x86_64.tar.gz -- 改下名字好记点 mv elasticsearch-8.12.0 elastic cd elastic ls ``` 可以看到文件如下: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/f6f996dff83ae793dac0ee0d9e89a23e.webp) #### 好了进行配置 1. 设置ip地址,允许接受任何一个ip地址访问---ps:配置的这台搜索服务作为开发环境使用,必须能够接收内网其他机器的请求: ```powershell vim config/elasticsearch.yml 设置以下内容: network.host: 0.0.0.0 #设置IP地址,任意网络可以访问 ``` ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/9078dc3e97552955e913d32ccaed17d3.webp) 然后,调整elastic使用的内存,测试机器不需要那么多内存: ```powershell vim config/jvm.options 修改内存为:( 根据自己情况进行修改) -Xms512m -Xmx512m ``` 如下显示: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/a4b5b55da564d59e10964f0207a40c20.webp) 修改一个进程在VMAS(虚拟内存区域)创建内存映射的最大数量 ```powershell sudo vim /etc/sysctl.d/99-sysctl.conf 然后,修改为: vm.max_map_count=655360 然后执行: sudo sysctl -p /etc/sysctl.d/99-sysctl.conf ``` ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/0b281c58f9222e7afb3907cbbecf1d18.webp) 然后,启动: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/aa512f9477cd1e2ad3e76926c20d278b.webp) 启动成功。 ... 我发现。。。elastic还会自己配置一堆参数的,例如如下: ![在这里插入图片描述](https://file.jishuzhan.net/article/1751429810673946625/276571dac3c64d4e8447c120ce402c67.webp) 不知道这些参数是不是随时变的。。如果随时变。。那就麻烦了。 ### 启用http访问接口 不知道其他版本是不是启动以后就能访问http接口,但是我使用的v8不行。 具体要设置一下:\[因为第一次启动以后会初始化并且添加部分参数的,下面就是要修改自动添加的参数配置

在elastic自动配置时候,会将 http的访问给禁止了,要修改参数为:

powershell 复制代码
vim config/elasticsearch.yml
xpack.security.enabled: false

重启一下:

powershell 复制代码
请先用命令获得程序pid,
lsof -i:9200
来得到程序的pid,然后使用 kill pid来关闭elastic---因为http接口暂时没法用啊,没办法通过程序关闭。

可以看到:

https的访问

注意,自动配置的时候默认是关闭了http的访问,只开启https的访问的,如果将地址协议改成https,那么你就可以看到:

当你输入了正确的账号以及密码以后,也是能够正常访问的:

常见命令

powershell 复制代码
## 后台启动
./bin/elasticsearch -d  
## 停止

创建脚本进行服务的启动以及关停。

启动

start.sh

powershell 复制代码
#!/bin/sh
touch log.log

#关闭之前的进程
(ps -ef | grep './bin/elasticsearch -d' | grep -v grep | awk '{print $2}' | xargs kill -9) 2>/dev/null

#启动etcd服务进程
nohup ./bin/elasticsearch -d  >> log.log 2>&1 &
tail -f log.log 

if [ $? -eq 0 ]
then
    echo "elastic:开启成功!"
else
    echo "elastic:开启失败"
    exit #开启失败没必要进行下一步
fi

保存以后再

chmod +x start.sh

关闭

stop.sh

powershell 复制代码
#!/bin/sh
mkdir logs
echo '查找端口9200的占用程序并且杀掉进程。如果elastic的http端口改变了,请同步更新到该脚本上'
lsof -ntP -i:9200 | grep -v grep|awk '{printf $1}'|  xargs kill -9
echo "查看是否正常退出进程"
lsof -i:9200
DATE=`date +%Y-%m-%d-%H-%M` #获取当前系统时间
mv log.log logs/${DATE}_log.log

然后

chmod +x stop.sh

常见错误

不允许root账号执行

powershell 复制代码
报错:
不允许使用root账号执行。。。

xms这些参数有空格

启动以后看到:

Invalid initial heap size: -Xms512m

这是因为:

无法访问 9200 端口

先检查一下9200端口是否真的被elastic用了:

这种情况确实是elastic已经启动且占用了9200,那么问题是。。

在elastic自动配置时候,会将 http的访问给禁止了,要修改参数为:

powershell 复制代码
vim config/elasticsearch.yml
xpack.security.enabled: false

重启一下:

powershell 复制代码
ps: 如果http接口可以用的话,
可以直接使用:
## 关闭本地节点
curl -XPOST 'http://localhost:9200/_cluster/nodes/_local/_shutdown'
## 关闭所有节点
curl -XPOST 'http://localhost:9200/_shutdown'
这个命令,但是http没办法使用,那么可以用:
lsof -i:9200
来得到程序的pid,然后使用 kill pid来关闭。

可以看到:

classpath环境变量引发的惨案-NoSuchFileException

运行的时候可能会出现这种问题,问题在哪里?

powershell 复制代码
这个问题是由于 Elasticsearch 8.x 版本与旧版本的 Java 环境变量配置不兼容导致的。
Elasticsearch 8 闪退报错:Elasticsearchjava.nio.file.NoSuchFileException: elasticsearch-8.8.2\%JAVA_HOME%\lib\dt.jar
环境变量配置错误:如果在环境变量中设置了 CLASSPATH,这可能会导致 Elasticsearch 8 找不到 dt.jar 。
请检环境变量设置,并尝试删除或修改 CLASSPATH 变量。

检查一下/etc/profile 有:

找到classpath,注释掉。

相关推荐
笑醉踏歌行39 分钟前
NVM,Node.Js 管理工具
运维·ubuntu·node.js
Elasticsearch3 小时前
ES8 向量功能窥探系列(二):向量数据的存储与优化
elasticsearch
bbsh20994 小时前
WebFuture:Ubuntu 系统上在线安装.NET Core 8 的步骤
linux·ubuntu·.netcore·webfuture
安审若无4 小时前
Elasticsearch中的监控(Monitoring)功能介绍
elasticsearch·搜索引擎·全文检索
leo_hush4 小时前
elasticsearch基本操作笔记
elasticsearch
咸鱼求放生15 小时前
es在Linux安装
大数据·elasticsearch·搜索引擎
zmm042015 小时前
Could not get unknown property ‘mUser‘ for Credentials [username: null]
jenkins·gradle
藥瓿亭15 小时前
K8S认证|CKS题库+答案| 3. 默认网络策略
运维·ubuntu·docker·云原生·容器·kubernetes·cks
xyhshen15 小时前
k8s下离线搭建elasticsearch
elasticsearch·容器·kubernetes
Gaoithe16 小时前
ubuntu 端口复用
linux·运维·ubuntu