问题
logstash输出到elasticsearch出现问题
Logstash • sec_master 回复了问题 • 4 人关注 • 3 个回复 • 20356 次浏览 • 2019-12-04 11:02
filebeat设置了多行合并,kibana出现日志缺失
Elasticsearch • xiaoaps 回复了问题 • 5 人关注 • 8 个回复 • 4116 次浏览 • 2019-01-29 10:25
128G内存服务器怎么给elasticsearch6.0分配32g内存?
Elasticsearch • strglee 回复了问题 • 3 人关注 • 1 个回复 • 4611 次浏览 • 2017-12-28 17:31
Elasticsearch关于unassigned shards修复
Elasticsearch • arterforyou 发表了文章 • 2 个评论 • 5850 次浏览 • 2017-12-23 12:23
ES 版本: 5.2.1
步骤:
- curl localhost:9200/_cat/shards > shards
- 跑脚本:nohup python recovery.py &
注意:跑脚本过程会返回大量json,时间较长,请注意放入后台
- 查看修复shard进度:curl 127.0.0.1:9200/_cat/recovery/你修复shard对应的索引
- 结果: 找到索引对应的shard,看到existing_store done说明已经从本地修复
index 19 268ms existing_store done n/a n/a 10.0.58.67 node_name
#!/usr/bin/env python
#name: recovery.py
import requests
import json
host = "http://localhost:9200/_cluster/allocation/explain"
s= requests.Session()
def reroute_shard(index,shard,node):
data = {
"commands" : [
{
"allocate_stale_primary" : {
"index" : index, "shard" : shard, "node" : node, "accept_data_loss": True
}
}
]
}
print data
url = "http://localhost:9200/_cluster/reroute"
res = s.post(url,json=data)
print res
def get_node(line):
if "UNASSIGNED" in line:
line = line.split()
index = line[0]
shard = line[1]
if line[2] != "p":
return
body = {
"index": index,
"shard": shard,
"primary": True
}
res = s.get(host, json = body)
for store in res.json().get("node_allocation_decisions"):
if store.get("store").get("allocation_id"):
node_name = store.get("node_name")
reroute_shard(index,shard,node_name)
else:
return
with open("shards", 'rb') as f:
map(get_node,f)
相关文档:
es搜索特殊字符《
Elasticsearch • chachalala 回复了问题 • 4 人关注 • 2 个回复 • 13365 次浏览 • 2017-03-10 14:40
elasticsearch严重问题
Elasticsearch • wangjueying 回复了问题 • 2 人关注 • 1 个回复 • 4501 次浏览 • 2017-02-03 15:06
logstash输出到elasticsearch出现问题
回复Logstash • sec_master 回复了问题 • 4 人关注 • 3 个回复 • 20356 次浏览 • 2019-12-04 11:02
filebeat设置了多行合并,kibana出现日志缺失
回复Elasticsearch • xiaoaps 回复了问题 • 5 人关注 • 8 个回复 • 4116 次浏览 • 2019-01-29 10:25
128G内存服务器怎么给elasticsearch6.0分配32g内存?
回复Elasticsearch • strglee 回复了问题 • 3 人关注 • 1 个回复 • 4611 次浏览 • 2017-12-28 17:31
elasticsearch严重问题
回复Elasticsearch • wangjueying 回复了问题 • 2 人关注 • 1 个回复 • 4501 次浏览 • 2017-02-03 15:06
Elasticsearch关于unassigned shards修复
Elasticsearch • arterforyou 发表了文章 • 2 个评论 • 5850 次浏览 • 2017-12-23 12:23
ES 版本: 5.2.1
步骤:
- curl localhost:9200/_cat/shards > shards
- 跑脚本:nohup python recovery.py &
注意:跑脚本过程会返回大量json,时间较长,请注意放入后台
- 查看修复shard进度:curl 127.0.0.1:9200/_cat/recovery/你修复shard对应的索引
- 结果: 找到索引对应的shard,看到existing_store done说明已经从本地修复
index 19 268ms existing_store done n/a n/a 10.0.58.67 node_name
#!/usr/bin/env python
#name: recovery.py
import requests
import json
host = "http://localhost:9200/_cluster/allocation/explain"
s= requests.Session()
def reroute_shard(index,shard,node):
data = {
"commands" : [
{
"allocate_stale_primary" : {
"index" : index, "shard" : shard, "node" : node, "accept_data_loss": True
}
}
]
}
print data
url = "http://localhost:9200/_cluster/reroute"
res = s.post(url,json=data)
print res
def get_node(line):
if "UNASSIGNED" in line:
line = line.split()
index = line[0]
shard = line[1]
if line[2] != "p":
return
body = {
"index": index,
"shard": shard,
"primary": True
}
res = s.get(host, json = body)
for store in res.json().get("node_allocation_decisions"):
if store.get("store").get("allocation_id"):
node_name = store.get("node_name")
reroute_shard(index,shard,node_name)
else:
return
with open("shards", 'rb') as f:
map(get_node,f)
相关文档: