我正在使用来自AWS的Elastic搜索服务。我面临一个奇怪的问题。 弹性搜索节点似乎已变为只读状态。我查看了日志,但是代码中没有一个错误。我正在成功。 我为nodejs使用了弹性客户端。
var elasticClient = new elasticsearch.Client(this.options);
elasticClient.bulk(data);
数据看起来像:
[
{
"update": {
"_index": "elastic_index",
"_type": "user",
"_id": 22224689
}
},
{
"doc": {
"id": 22224689,
"first_name" : "John",
"last_name" : "Deo",
"email" : "jd@testemail.com",
"dob" : "1985-12-20",
"company_name" : "MPLLC",
"city" : "NY",
"state" : "Cal",
"country" : "USA",
"events" : [
{
"event_name" : "E1",
"date" : "2018-08-15",
"venue" : "Some custom venue"
}
]
},
"doc_as_upsert": true
}
]
从过去的两年开始,它一直运行良好。突然停止在索引中记录用户。
这是我在用ES编写时遇到的异常:
{"error":{"root_cause":[{"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/8/index write (api)];"}],"type":"cluster_block_exception","reason":"blocked by: [FORBIDDEN/8/index write (api)]
有什么问题吗?
答案 0 :(得分:0)
我遇到了完全相同的问题。就我而言,问题在于索引生命周期策略。我有一个策略,在一定时间后将索引模式更改为“暖”。出于某种原因,消息开始堆积在我的队列中并在那之后到达 Elasticsearch 集群。这会导致拒绝,因为索引模式“暖”是只读状态。它需要处于“热”状态才能允许写入。
解决方案是延长进入“暖”模式的时间。
另一个可能的原因是集群节点开始耗尽内存或空间。