当前位置:   article > 正文

Elasticsearch-7,2024年最新面试题附答案

Elasticsearch-7,2024年最新面试题附答案

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文



> 
> cluster.name:如果要配置集群需要两个节点上的elasticsearch配置的cluster.name相同,都启动可以自动组成集群,这里如果不改cluster.name则默认是cluster.name=my-application,  
>  node.name:随意取但是集群内的各节点不能相同
> 
> 
> 修改后的每行前面不能有空格,修改后的“:”后面必须有一个空格
> 
> 
> 


* 分发至hadoop103以及hadoop104,分发之后修改配置文件:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

[wolffy@hadoop102 module]$ xsync.sh elasticsearch-7.8.0/



  • 1
  • 2

[wolffy@hadoop103 elasticsearch-7.8.0]$ vim /opt/module/elasticsearch-7.8.0/config/elasticsearch.yml

在hadoop103机器修改以下信息

node.name: node103
network.host: hadoop103

[wolffy@hadoop104 elasticsearch-7.8.0]$ vim /opt/module/elasticsearch-7.8.0/config/elasticsearch.yml

在hadoop104机器修改以下信息

node.name: node104
network.host: hadoop104


#### 2.1.3 调整linux内核参数


* 切换到root用户,编辑limits.conf 添加类似如下内容



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[root@hadoop102 elasticsearch-7.8.0]# vi /etc/security/limits.conf

  • soft nofile 65536
  • hard nofile 131072
  • soft nproc 2048
  • hard nproc 4096

注意:\*不要省略掉。以上操作为增加Linux文件系统中可以同时打开的文件句柄数。


* 切换到root用户修改配置sysctl.conf



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[root@hadoop102 elasticsearch-7.8.0]# vi /etc/sysctl.conf
vm.max_map_count=655360


以上修改的Linux配置需要分发至其他节点.然后重新启动Linux,必须重启!!!


#### 2.1.4 ElasticSearch启动


* 单点启动



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

[wolffy@hadoop102 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch
[wolffy@hadoop103 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch
[wolffy@hadoop104 elasticsearch-7.8.0]$ /opt/module/elasticsearch-7.8.0/bin/elasticsearch


* 群起脚本elasticsearch\_control.sh



  • 1
  • 2
  • 3
  • 4
  • 5

[wolffy@hadoop102 bin]$ vim /home/wolffy/bin/elasticsearch_control.sh
#!/bin/bash

请确保SSH密钥认证已经设置好,以便脚本能够无密码登录到每台机器上执行命令

# 定义Elasticsearch的地址和端口

ELASTICSEARCH_HOST=(“hadoop102” “hadoop103” “hadoop104”)
ELASTICSEARCH_PORT=“9200”

定义启动Elasticsearch的命令

START_CMD=“nohup /opt/module/elasticsearch-7.8.0/bin/elasticsearch > /dev/null 2>&1 &”

定义停止Elasticsearch的命令

STOP_CMD="ps -ef | grep Elasticsearch | grep -v grep | awk ‘{print $2}’ | xargs kill "

定义检查Elasticsearch状态的命令

STATUS_CMD=“curl http:// E L A S T I C S E A R C H _ H O S T : {ELASTICSEARCH\_HOST}: ELASTICSEARCH_HOST:{ELASTICSEARCH_PORT}/_cat/nodes?v”

函数:启动Elasticsearch服务

start_elasticsearch() {
for i in “${ELASTICSEARCH_HOST[@]}”; do
echo “Starting Elasticsearch on $i…”
ssh i " i " i"START_CMD"
if [ $? -eq 0 ]; then
echo “Elasticsearch started successfully on $i.”
else
echo “Failed to start Elasticsearch on $i.”
fi
done
}

函数:停止Elasticsearch服务

stop_elasticsearch() {
for i in “${ELASTICSEARCH_HOST[@]}”; do
echo “Stopping Elasticsearch on $i…”
ssh i " i " i"STOP_CMD"
if [ $? -eq 0 ]; then
echo “Elasticsearch stopped successfully on $i.”
else
echo “Failed to stop Elasticsearch on $i.”
fi
done
}

函数:检查Elasticsearch服务状态

check_elasticsearch_status() {
for i in “${ELASTICSEARCH_HOST[@]}”; do
echo “Checking Elasticsearch status on $i…”
ssh i " i " i"STATUS_CMD"
# 执行curl命令并输出集群健康状态
echo “Checking Elasticsearch cluster health…”
$CHECK_HEALTH_CMD
# 检查curl命令的退出状态,如果非0则输出错误消息
if [ $? -ne 0 ]; then
echo “Failed to retrieve Elasticsearch cluster health.”
exit 1
fi
done
}

解析命令行参数

case “$1” in
start)
start_elasticsearch
;;
stop)
stop_elasticsearch
;;
status)
check_elasticsearch_status
;;
*)
echo “Usage: $0 {start|stop|status}”
exit 1
;;
esac

[wolffy@hadoop102 bin]$ chmod +x /home/wolffy/bin/elasticsearch_control.sh
[wolffy@hadoop102 bin]$ elasticsearch_control.sh start
[wolffy@hadoop102 bin]$ elasticsearch_control.sh status
[wolffy@hadoop102 bin]$ elasticsearch_control.sh stop


* 访问:http://hadoop102:9200/\_cat/nodes?v


### 2.2 安装Kibana-7.8.0


Kibana是一个用于探索、可视化和分享ES数据的客户端。因此在任一节点安装即可。


#### 2.2.1 安装包下载


下载地址:https://www.elastic.co/downloads/past-releases#kibana


#### 2.2.2 解压安装Kibana


* 将kibana压缩包上传到所安装节点的指定目录



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23

[wolffy@hadoop102 module]$ tar -zxvf /opt/software/kibana-7.8.0-linux-x86_64.tar.gz -C /opt/module/
[wolffy@hadoop102 module]$ mv /opt/module/kibana-7.8.0-linux-x86_64/ /opt/module/kibana-7.8.0


* 修改相关配置连接Elasticsearch



  • 1
  • 2
  • 3
  • 4
  • 5

[wolffy@hadoop102 kibana-7.8.0]$ vi config/kibana.yml
server.host: “hadoop102”
server.port: 5601
elasticsearch.hosts: [“http://hadoop102:9200”]
i18n.locale: “zh-CN”


#### 2.2.3 Kibana启动


* 启动Kibana



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[wolffy@hadoop102 kibana-7.8.0]$ bin/kibana


* Kibana启停脚本(安装nodejs)



  • 1
  • 2
  • 3
  • 4
  • 5

[wolffy@hadoop102 bin]$ vim /home/wolffy/bin/kibana_control.sh
#!/bin/bash

定义Kibana的安装路径

KIBANA_HOME=“/opt/module/kibana-7.8.0”

定义Kibana的进程名或关键字,用于查找进程ID

KIBANA_PROCESS_NAME=“node ./bin/…/src/cli”

函数:启动Kibana

start_kibana() {
# 切换到Kibana的安装目录
cd “$KIBANA_HOME” || exit

# 启动Kibana 
echo "Starting Kibana..."  
nohup ./bin/kibana &> kibana.log & # 在后台启动Kibana并将输出重定向到kibana.log 

# 检查Kibana进程是否正在运行(可选) 
sleep 5 # 等待Kibana启动 
if pgrep -f "$KIBANA\_PROCESS\_NAME" > /dev/null; then  
    echo "Kibana started successfully."  
else  
    echo "Failed to start Kibana."  
    exit 1  
fi  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

}

函数:停止Kibana

stop_kibana() {
# 查找Kibana的进程ID
KIBANA_PID= ( p g r e p − f " (pgrep -f " (pgrepf"KIBANA_PROCESS_NAME")

# 检查是否找到了Kibana的进程ID 
if [ -z "$KIBANA\_PID" ]; then  
    echo "Kibana is not running."  
    exit 0  
fi  

# 停止Kibana进程 
echo "Stopping Kibana..."  
kill "$KIBANA\_PID"  

# 等待Kibana进程结束 
wait "$KIBANA\_PID" || true  

# 检查Kibana是否已停止 
if pgrep -f "$KIBANA\_PROCESS\_NAME" > /dev/null; then  
    echo "Failed to stop Kibana."  
    exit 1  
else  
    echo "Kibana stopped successfully."  
fi  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

}

检查传入的参数

case “$1” in
start)
start_kibana
;;
stop)
stop_kibana
;;
*)
echo "Usage: 0 s t a r t ∣ s t o p " e x i t 1 ; ; e s a c [ w o l f f y @ h a d o o p 102 b i n ] 0 {start|stop}" exit 1 ;; esac [wolffy@hadoop102 bin] 0startstop"exit1;;esac[wolffy@hadoop102bin] chmod +x /home/wolffy/bin/kibana_control.sh


* 浏览器访问:http://hadoop102:5601/app/kibana#/dev\_tools/console


### 2.3 安装elasticsearch-analysis-ik-7.8.0


Elasticsearch-Analysis-IK是一个专门为Elasticsearch设计的中文分词器插件,它将Lucene IK分词器集成到Elasticsearch中,并支持自定义词典。


* 下载解压:https://github.com/infinilabs/analysis-ik/tags



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

[wolffy@hadoop102 elasticsearch-7.8.0]$ cd plugins/
[wolffy@hadoop102 plugins]$ mkdir ik
[wolffy@hadoop102 plugins]$ cd ik
[wolffy@hadoop102 ik]$ unzip /opt/software/elasticsearch-analysis-ik-7.8.0.zip
[wolffy@hadoop102 ik]$ cp /opt/software/elasticsearch-analysis-ik-7.8.0/* /opt/module/elasticsearch-7.8.0/plugins/ik


* 分发分词器到所有节点



  • 1
  • 2
  • 3
  • 4
  • 5

[wolffy@hadoop102 plugins]$ xsync.sh ik


* 重新启动Elasticsearch



  • 1
  • 2
  • 3
  • 4
  • 5

[wolffy@hadoop102 plugins]$ elasticsearch_control.sh start


### 2.4 卸载Elasticsearch-7.8.0和Kibana-7.8.0


* 停止服务后。执行下面命令



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

[wolffy@hadoop102 module]$ rm -rf /opt/module/elasticsearch-7.8.0
[wolffy@hadoop102 module]$ rm -rf kibana-7.8.0


### 2.5 注意


因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令:



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

useradd wolffy # 新增wolffy用户
passwd wolffy # 为wolffy用户设置密码
5、为新用户授权
chown -R wolffy:wolffy /opt/elasticsearch-7.4.0 #文件夹所有者
将 /opt/elasticsearch-7.4.0文件夹授权给wolffy用户:wolffy用户组


8.0以上需要增加如下配置



  • 1
  • 2
  • 3
  • 4
  • 5

打开elasticsearch.yml
新增
xpack.security.enabled: false
xpack.security.transport.ssl.enabled: false


## 第三章 Elasticsearch-7.8.0通过Docker方式安装



### 3.1 安装 Elasticsearch-7.8.0


#### 3.1.1 创建网络



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

因为需要部署kibana容器,因此需要让es和kibana容器互联。

docker network create es-net


#### 3.1.2 拉取镜像



  • 1
  • 2
  • 3
  • 4
  • 5

拉取镜像

docker pull elasticsearch:7.8.0


#### 3.1.3 创建挂载点目录



  • 1
  • 2
  • 3
  • 4
  • 5

创建挂载点目录

mkdir -p
/Users/wolffy/docker/elasticsearch-7.8.0/data
/Users/wolffy/docker/elasticsearch-7.8.0/config
/Users/wolffy/docker/elasticsearch-7.8.0/plugins

修改权限

chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/data
chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/config
chmod 777 /Users/wolffy/docker/elasticsearch-7.8.0/plugins



> 
> Likely root cause: java.nio.file.AccessDeniedException: /usr/share/elasticse
> 
> 
> 宿主机的目录权限问题 :用户目录一定要家目录。这样用户才有权限问题。
> 
> 
> 


#### 3.1.4 创建容器



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

docker run -d
–restart=always
–name elasticsearch-7.8.0
–network es-net
-p 9200:9200
-p 9300:9300
–privileged
-v /Users/wolffy/docker/elasticsearch-7.8.0/data:/usr/share/elasticsearch/data
-v /Users/wolffy/docker/elasticsearch-7.8.0/plugins:/usr/share/elasticsearch/plugins
-e “discovery.type=single-node”
-e “ES_JAVA_OPTS=-Xms512m -Xmx512m”
elasticsearch:7.8.0


* `-d`: 在后台运行容器,并返回容器ID。
* `--restart=always`: 无论容器的退出状态如何,始终重启容器。这确保了即使Elasticsearch服务因为某种原因停止,容器也会自动重启。
* `--name elasticsearch-7.8.0`: 为容器指定一个名称,这里是`elasticsearch-7.8.0`。
* `--network es-net`: 将容器连接到名为`es-net`的Docker网络。这允许容器与同一网络上的其他容器通信。
* `-p 9200:9200`: 将宿主机的9200端口映射到容器内的9200端口,用于Elasticsearch的HTTP接口。
* `-p 9300:9300`: 将宿主机的9300端口映射到容器内的9300端口,用于Elasticsearch的传输层通信。
* `--privileged`: 给予容器扩展的权限,让容器内的root用户拥有宿主机的root权限。这通常不是最佳实践,因为它可能会带来安全风险,但在某些情况下,Elasticsearch可能需要这些权限来正确运行。
* `-v /Users/wolffy/docker/elasticsearch-7.8.0/data:/usr/share/elasticsearch/data`: 将宿主机的`/Users/wolffy/docker/elasticsearch-7.8.0/data`目录映射到容器内的`/usr/share/elasticsearch/data`目录,用于存储Elasticsearch的数据。
* `-v /Users/wolffy/docker/elasticsearch-7.8.0/plugins:/usr/share/elasticsearch/plugins`: 将宿主机的`/Users/wolffy/docker/elasticsearch-7.8.0/plugins`目录映射到容器内的`/usr/share/elasticsearch/plugins`目录,允许你将自定义插件安装在宿主机上,并在容器中使用。
* `-e "discovery.type=single-node"`: 设置环境变量`discovery.type`为`single-node`,告诉Elasticsearch以单节点模式运行。这在开发或测试环境中很常见,但在生产环境中,你可能需要配置一个更复杂的集群。
* `-e "ES_JAVA_OPTS=-Xms512m -Xmx512m"`: 设置环境变量`ES_JAVA_OPTS`来配置Elasticsearch的Java虚拟机。这里,`-Xms512m`设置了JVM的初始堆大小为512MB,`-Xmx512m`设置了最大堆大小为512MB。
* `elasticsearch:7.8.0`: 指定要运行的Elasticsearch镜像及其版本,这里是`elasticsearch:7.8.0`。


#### 3.1.5 编写elasticsearch.yml[可选]



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

先进入es容器

docker exec -it elasticsearch-7.8.0 /bin/bash

关闭 密码安全验证

echo ‘xpack.security.enabled: false’ >> config/elasticsearch.yml
cat config/elasticsearch.yml



> 
> xpack.security.enabled: false elasticsearch-8.x以下无需配置
> 
> 
> 


#### 3.1.6 重启elasticsearch容器测试



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

docker restart es
docker start es


http://localhost:9200/


### 3.2 安装Kibana-7.8.0


#### 3.2.1 拉取镜像



  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

docker pull kibana:7.8.0


#### 3.2.2 创建挂载点目录



  • 1
  • 2
  • 3
  • 4
  • 5

mkdir -p
/Users/wolffy/docker/kibana-7.8.0/config
/Users/wolffy/docker/kibana-7.8.0/data

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

给大家整理的电子书资料:

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
-7.8.0/config
/Users/wolffy/docker/kibana-7.8.0/data

最后的话

最近很多小伙伴找我要Linux学习资料,于是我翻箱倒柜,整理了一些优质资源,涵盖视频、电子书、PPT等共享给大家!

资料预览

给大家整理的视频资料:

[外链图片转存中…(img-ZOrDoU08-1713322472023)]

给大家整理的电子书资料:

[外链图片转存中…(img-Slbp7HFx-1713322472023)]

如果本文对你有帮助,欢迎点赞、收藏、转发给朋友,让我有持续创作的动力!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-MvDksdin-1713322472024)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/知新_RL/article/detail/633689
推荐阅读
相关标签
  

闽ICP备14008679号