首页 > 其他分享 >ElasticSearch学习资料

ElasticSearch学习资料

时间:2023-04-24 11:47:26浏览次数:41  
标签:9200 分片 cat 学习 ElasticSearch 资料 curl 节点 es

  • elasticsearch集群正确关闭、重启方式

问题原因:

在elasticsearch集群中,当集群发现某个节点关闭时,将延迟一分钟后(默认)再开始将该节点上的分片复制到集群中的其他节点,这可能涉及很多I / O。由于该节点不久将要重新启动,因此该I / O是不必要的。您可以通过在关闭节点之前禁用副本分配来避免。

正确关闭方式:

第一步:

禁止分片自动分布

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": "primaries"
  }
}
'

第二部:

执行同步刷新

curl -X POST "localhost:9200/_flush/synced?pretty"

注意:

执行同步刷新时,请检查响应以确保没有失败。尽管请求本身仍返回200 OK状态,但在响应正文中列出了由于挂起索引操作而失败的同步刷新操作。如果失败,请重新发出请求。

第三部:

关闭所有节点

如果您使用以下命令运行Elasticsearch systemd:
sudo systemctl stop elasticsearch.service

如果您正在使用SysV运行Elasticsearch init:
sudo -i service elasticsearch stop

如果您将Elasticsearch作为守护程序运行:
kill $(cat pid.txt)

关闭结束后可以执行你任何的更改

正确重启方式:

第一步:

执行完操作后逐个启动节点

cd $ES_HOME
./bin/elasticsearch -d -p $ES_HOME/pid.txt

第二步:

等所有节点启动完成后,可以通过执行如下请求查看集群状态:

curl -X GET "localhost:9200/_cat/health?pretty"
curl -X GET "localhost:9200/_cat/nodes?pretty"

状态分别有:redyellowgreen

当节点加入集群时,它开始恢复本地存储的所有主分片。该_cat/healthAPI最初将报告statusred,表明并非所有的初级碎片已被分配。一旦节点恢复了其本地分片,集群status就会切换到 yellow,表示所有主分片都已恢复,但并非所有副本分片都已分配。这是可以预期的,因为您尚未重新启用分配。将副本的分配延迟到所有节点都yellow可用之后,主服务器便可以将副本分配给已经具有本地分片副本的节点。

第三步:

启用分片自动分布

当所有节点都已加入集群并恢复了其主要分片后,可通过恢复cluster.routing.allocation.enable为其默认值来重新启用分配:

curl -X PUT "localhost:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.enable": null
  }
}
'

重新启用分配后,集群便开始将副本分片分配给数据节点。此时,恢复索引和搜索是安全的,但是如果您可以等待直到成功分配了所有主分片和副本分片并且所有节点的状态为,集群就会恢复得更快green

您可以使用_cat/health和 _cat/recoveryAPI 监视进度

curl -X GET "localhost:9200/_cat/health?pretty"
curl -X GET "localhost:9200/_cat/recovery?pretty"
  • 备份与删除

配置文件elasticsearch.yml

在配置文件config/elasticsearch.yml 中添加一行数据,设置ES备份的快照数据存储路径。如果没有此目录则须要自行建立。配置好后,须要重启ES

path.repo: ["/app/es_backup"]

建立仓库

curl -X PUT http://IP:9200/_snapshot/es_backup -H 'Content-Type: application/json' -d'
{
"type": "fs",
"settings": {
"location": "/app/es_backup"
}
}'

备份数据

curl -X PUT http://IP:9200/_snapshot/es_backup/2022.06 -H 'Content-Type: application/json' -d'
{
"indices": "<k8s-node*-2022.06*>",
"ignore_unavailable": true,
"include_global_state": false
}'

 

删除数据

 curl -X DELETE http://IP:9200/k8s-node*-2022.06.*

恢复数据

curl -X POST http://ES的ip:端口/_snapshot/es_backup/2022.06/_restore
 
  • 在线修改配置

 

curl -X PUT "IP:9200/_cluster/settings?pretty" -H 'Content-Type: application/json' -d'
{
"persistent": {
"cluster": {
"routing": {
"allocation.disk.watermark.high": "95%",
"allocation.disk.watermark.low": "90%"
}
}
}
}'

注意:根据官方文件,当硬盘空间使用超过80%,es写入可能会有问题,所以要及时关注硬盘空间。上面是修改配置,硬盘空间超过90%,es才报警,95%则无法写入
定时任务删除数据脚本
 1 # cat es-dele-indices.sh
 2 #!/bin/bash
 3 #delete elasticsearch indices
 4 searchIndex=fluentd-k8s
 5 elastic_url=127.0.0.1
 6 elastic_port=
 7  
 8 date2stamp(){
 9   date --utc --date "$1" +%s
10 }
11  
12 dateDiff(){
13   case $ in
14     -s)  sec=;     shift;;
15     -m)  sec=;    shift;;
16     -h)  sec=;  shift;;
17     -d)  sec=; shift;;
18      *)  sec=; shift;;
19   esac
20   dte1=$(date2stamp $)
21   dte2=$(date2stamp $)
22   diffSec=$((dte2-dte1))
23   if ((diffSec < )); then abs=-; else abs=; fi
24   echo $((diffSec/sec*abs))
25 }
26  
27 for index in $(curl -s "${elastic_url}:${elastic_port}/_cat/indices?v" | grep -E " ${searchIndex}-20[0-9][0-9]\.[0-1][0-9]\.[0-3][0-9]" | awk '{     print $3 }');do
28   date=$(echo ${index: -}|sed 's/\./-/g')
29   cond=$(date +%Y-%m-%d)
30   diff=$(dateDiff -d $date $cond)
31   echo -n "${index} (${diff})"
32   if [ $diff -gt  ]; then
33     #echo "/ DELETE"
34     curl -XDELETE "${elastic_url}:${elastic_port}/${index}?pretty"
35   else
36     echo ""
37   fi
38 done
  • es查看

  1. 删除备份:curl -X DELETE "IP:9200/_snapshot/es_backup/2022.06
  2. 终止备份:curl -X POST "IP:9200/_snapshot/es_backup/2022.06/_cancel"
  3. 查看所有备份:http://IP:9200/_snapshot/es_backup/_all
  4. 查看健康状态:curl -X GET "IP:9200/_cat/health?pretty"
  5. 查看节点:curl -X GET "IP :9200/_cat/nodes?pretty"
  6. 查看indices:curl -X GET "IP ::9200/_cat/indices/k8s-node*2022.07*"

标签:9200,分片,cat,学习,ElasticSearch,资料,curl,节点,es
From: https://www.cnblogs.com/stupidjackey/p/17348949.html

相关文章

  • VBA学习笔记
    2023-04-24(1)OptionExplicit:在模块最开始加这句代码,如果程序中有未声明的变量,程序不会运行,且计算机会自动提醒你声明变量。在VBE编辑界面,通过工具--》选项--》编辑器--》勾选“要求变量声明”,则每个模块都会在第一句自动写下“OptionExplicit”(2)Static关键字:声明变量为......
  • elasticsearch+filebeat+kafka+kibana——filbeat篇章——overview
    filbeat篇章——overviewhttps://www.elastic.co/guide/en/beats/filebeat/8.7/filebeat-overview.html#filebeat-overview Filebeatisalightweightshipperforforwardingandcentralizinglogdata.Installedasanagentonyourservers,Filebeatmonitorsthelog......
  • 230424 关于单词的学习之输出
    最近,你在总结你的英语学习方法中,关于词汇的部分.之前,你在词汇学习中,学习了相当的长的时间,但是,整体的学习效果,并不是特别好.一方面,是复习的的问题.另外一方面,是你在学习的过程中,没有注意相应的输出.这两天,你试着,在学习后,让自己做语音输出,看起来效果还不错.你要......
  • 学习笔记10
    第21章存储秘密21.1磁盘存储秘密的一个很直接的办法是把秘密存储在计算机的硬盘上或其他永久存储介质上,这是可行的,但是任何使用此电脑的人都能使用该密钥。一个更好的解决方案是让Alice把密钥存储在她的PDA或智能手机上。这些设备很少会借给别人使用,而且无论去哪里都会随......
  • Vue学习笔记之Node Sass version 8.0.0 is incompatible with 4.0.0错误
    输入以下两个命令:npmuninstallnode-sassnpmi-Dsass注:Mac环境如果进行了系统升级,需要重新安装Xcode,执行命令xcode-selectinstall不然会出现如下的错误Mac解决gyp:NoXcodeorCLTversiondetected!报错 如果出现python2的错误gypverb`which`failedE......
  • HTML入门学习笔记
    HTML学习笔记详解01初识HTMLHTMLHTML,英文全称为HyperTextMarkupLanguage,中文翻译为超文本标记语言,其中超文本包括:文字,图片,音频,视频,动画等目前目前主流使用的是HTML5+CSS3HTML的优势主流浏览器都支持微软GOOGLE苹果市场的需求跨平台(类似JVM)W3C标准......
  • LCA(最近公共祖先)学习笔记
    前言没想到干完lca的时间比tarjan的还要长(我不能这么弱下去了!!)前置知识dfs序这东西有点类似于时间戳(dfn),但是它分为两部分(回溯之前和回溯之后)。并且dfs序还分为两种。这里只介绍一倍的dfs序。如上图,蓝色代表左端点,红色代表右端点,(学过Tarjan的都知道),蓝色其实就是这棵树的dfn(......
  • 深度学习--初识卷积神经网络
    深度学习--初识卷积神经网络1.LeNet-580年代,正确率达到99.2%5/6层输入层:32*32第一层:卷积层6@28*28第二层:下采样层6@14*14第三层:卷积层16@10*10第四层:下采样层16@5*5第五层:全连接层120第六层:全连接层84输出层:高斯连接层102.AlexNet2012年,8层网络结构5个卷......
  • 促进护理治疗中的决策表现:基于上下文数字游戏的翻转学习方法
    促进护理治疗中的决策表现:基于上下文数字游戏的翻转学习方法(Facilitatingdecision-makingperformancesinnursingtreatments:acontextualdigitalgame-basedflippedlearningapproach)★★实验结果实验组、对照组和两维度分析:对照组学生:使用传统翻转学习;实验组学生:使......
  • argc和argv学习
    转自:https://stackoverflow.com/questions/3024197/what-does-int-argc-char-argv-mean1.介绍argc:c是指count,传参个数,至少为1,表示执行的文件名;argv:v指vector,即传参向量。#include<iostream>intmain(intargc,char**argv){std::cout<<"Have"<<ar......