无法在Elastic搜索中写文档

时间:2018-08-03 12:10:17

标签: node.js amazon-web-services elasticsearch

我正在使用来自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)]

有什么问题吗?

1 个答案:

答案 0 :(得分:0)

我遇到了完全相同的问题。就我而言,问题在于索引生命周期策略。我有一个策略,在一定时间后将索引模式更改为“暖”。出于某种原因,消息开始堆积在我的队列中并在那之后到达 Elasticsearch 集群。这会导致拒绝,因为索引模式“暖”是只读状态。它需要处于“热”状态才能允许写入。

解决方案是延长进入“暖”模式的时间。

另一个可能的原因是集群节点开始耗尽内存或空间。