org.elasticsearch.cluster.block.ClusterBlockException:被阻止:[SERVICE_UNAVAILABLE/1/状态未恢复/初始化]

Er.*_*esh 6 elasticsearch logstash docker kibana elk

我使用的是 ELK 6.8.9,所有配置都在我的 docker-compose 文件中。它工作正常,但突然我收到一个错误

org.elasticsearch.action.search.SearchPhaseExecutionException: all shards failed
or org.elasticsearch.cluster.block.ClusterBlockException: blocked by: [SERVICE_UNAVAILABLE/1/state not recovered / initialized];
Run Code Online (Sandbox Code Playgroud)

这就是我配置ELK的方式

   elasticsearch:
    image: docker.elastic.co/elasticsearch/elasticsearch:6.8.9
    environment:
      - "ES_JAVA_OPTS=-Xms1g -Xmx1g"
    volumes:
      - /opt/services/data/elasticsearch:/usr/share/elasticsearch/data
    ports:
      - 9200:9200
    user: ${USER_ID}
Run Code Online (Sandbox Code Playgroud)

打电话时

curl -XGET 'localhost:9200/_cluster/health/balance_sheet?pretty'-- request
response -clear
Run Code Online (Sandbox Code Playgroud)
{
  "cluster_name" : "docker-cluster",
  "status" : "red",
  "timed_out" : true,
  "number_of_nodes" : 1,
  "number_of_data_nodes" : 1,
  "active_primary_shards" : 0,
  "active_shards" : 0,
  "relocating_shards" : 0,
  "initializing_shards" : 0,
  "unassigned_shards" : 0,
  "delayed_unassigned_shards" : 0,
  "number_of_pending_tasks" : 0,
  "number_of_in_flight_fetch" : 0,
  "task_max_waiting_in_queue_millis" : 0,
  "active_shards_percent_as_number" : 100.0
}
Run Code Online (Sandbox Code Playgroud)

Ita*_*ayB 1

假设您不关心数据(正如您在问题的评论中所说的那样 - 您可以删除/opt/services/data/elasticsearch本地计算机中的文件夹

在容器运行时执行此操作down,然后up再次运行。

  • 所以我想这是你的问题。Elasticsearch 默认复制因子为 1,这意味着每个分片有两个副本。两个相同的分片不能存在于同一个节点上,因为您只使用一个节点运行 - 第二个分片因为未分配。您需要将默认复制因子更改为 0 或添加另一个 Elasticsearch 节点 (2认同)