Elasticsearch 8中_shards参数相关的三个技术疑问
Elasticsearch 8 写入操作分片相关问题解答
在Elasticsearch 8环境下执行以下PUT写入请求:
PUT /vehicles/_doc/123 { "make": "Honda", "color": "Blue", "HP": 250, "milage": 24000, "price": 19300.97 }
得到的返回结果如下:
{ "_index": "vehicles", "_id": "123", "_version": 2, "result": "updated", "_shards": { "total": 2, "successful": 1, "failed": 0 }, "_seq_no": 1, "_primary_term": 1 }
针对以下三个问题的解答:
问题1:total分片数(此处为2)是否包含主分片与副本分片?
是的,total统计的是目标索引中主分片+副本分片的总数量。你这个场景里vehicles索引应该是1个主分片搭配1个副本分片,所以总数为2。问题2:successful分片数是否仅指写入该PUT请求的主分片?能否大于1?
不是仅统计主分片。默认逻辑是,Elasticsearch成功写入主分片后,会等待副本分片同步数据,successful会统计所有成功完成写入的分片(包括主分片和同步成功的副本分片)。所以它完全可以大于1——比如如果副本分片同步成功,这里的successful就会变成2。你这次返回1,说明主分片写入成功,但副本分片未完成同步(或处于未分配状态)。问题3:failed分片是否仅指失败的主分片?
不是,failed统计的是所有写入失败的分片,涵盖主分片和副本分片。如果主分片写入失败,整个请求会直接报错;如果主分片写入成功,但某个副本分片同步失败,就会在failed里计数对应的副本分片。
内容的提问来源于stack exchange,提问作者william007
相关产品推荐
相关产品推荐

