博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Elasticsearch 异常处理
阅读量:5298 次
发布时间:2019-06-14

本文共 2839 字,大约阅读时间需要 9 分钟。

cluster_block_exception

在向index插入数据的时候报错

Request

PUT http://localhost:9200/customer/_doc/1?pretty

PUT data:

{
"name": "John Doe"
}

Response

{

"error" : {
"root_cause" : [
{
"type" : "cluster_block_exception",
"reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
}
],
"type" : "cluster_block_exception",
"reason" : "blocked by: [FORBIDDEN/12/index read-only / allow delete (api)];"
},
"status" : 403
}

 

This happens when Elasticsearch thinks the disk is running low on space so it puts itself into read-only mode.

By default Elasticsearch's decision is based on the percentage of disk space that's free, so on big disks this can happen even if you have many gigabytes of free space.

The flood stage watermark is 95% by default, so on a 1TB drive you need at least 50GB of free space or Elasticsearch will put itself into read-only mode.

For docs about the flood stage watermark see .

The right solution depends on the context - for example a production environment vs a development environment.

 

Solution 1: free up disk space

Freeing up enough disk space so that more than 5% of the disk is free will solve this problem.

Elasticsearch won't automatically take itself out of read-only mode once enough disk is free though, you'll have to do something like this to unlock the indices:

$ curl -XPUT -H "Content-Type: application/json" https://[YOUR_ELASTICSEARCH_ENDPOINT]:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

-d参数是数据的意思 

 设置完成之后,

{

"acknowledged": true
}

 

Solution 2: change the flood stage watermark setting

Change the "cluster.routing.allocation.disk.watermark.flood_stage" setting to something else.

It can either be set to a lower percentage or to an absolute value.

Here's an example of how to change the setting from :

PUT _cluster/settings{  "transient": {    "cluster.routing.allocation.disk.watermark.low": "100gb",    "cluster.routing.allocation.disk.watermark.high": "50gb",    "cluster.routing.allocation.disk.watermark.flood_stage": "10gb",    "cluster.info.update.interval": "1m"  }}

Again, after doing this you'll have to use the curl command above to unlock the indices, but after that they should not go into read-only mode again.

 

The bulk request must be terminated by a newline

{

"error" : {
"root_cause" : [
{
"type" : "illegal_argument_exception",
"reason" : "The bulk request must be terminated by a newline [\n]"
}
],
"type" : "illegal_argument_exception",
"reason" : "The bulk request must be terminated by a newline [\n]"
},
"status" : 400
}

在批量导入数据的时候出错

 

Add empty line at the end of the JSON file and save the file and then try to run the below command

curl -XPOST localhost:9200/subscribers/ppl/_bulk?pretty --data-binary @customers_full.json -H 'Content-Type: application/json'

I hope it works fine for you.

 

 

转载于:https://www.cnblogs.com/chucklu/p/10552601.html

你可能感兴趣的文章
ubuntu18 tensorflow cpu fast_rcnn
查看>>
PageHelper在Mybatis中的使用
查看>>
POJ 1742 Coins
查看>>
Leetcode 589. N-ary Tree Preorder Traversal
查看>>
ADO.Net——增、删、改、查
查看>>
thinking back no11
查看>>
机器学习/深度学习/其他开发环境搭建记录
查看>>
xml.exist() 实例演示
查看>>
判断是否为空然后赋值
查看>>
中标麒麟QT+ODBC+人大金仓开发环境配置
查看>>
Silverlight WCF RIA服务(九)Domain Service 2
查看>>
JSON的结构
查看>>
NopCommerce换主题这件小事
查看>>
zabbix监控日志文件
查看>>
mysql查询数据库中每一张表的内存大小
查看>>
ThinkPHP函数详解:U方法
查看>>
正则表达式
查看>>
E4 - 使用Model Fragments扩展视图
查看>>
pip install torch on windows, and the 'from torch._C import * ImportError: DLL load failed:' s...
查看>>
zencart iis 伪静态设置 测试可用
查看>>