从ES2.2升级到5.2后,原先执行put 带 consistency=all / quorum 参数的,都报错了,提示语法错误。。
百度查了一通,都没发现相关问题。无奈,还是查官方文档。。
发现这是在 5.0-alpha 发布的时候,带的feature。。贴上官方文档:
有兴趣的话,可以到Github上,继续看看其中原因:
https://github.com/elastic/elasticsearch/pull/19454
就是说,consistency检查是在Put之前做的。然而,虽然检查的时候,shard满足quorum,但是真正从primary shard写到replica之前,仍会出现shard挂掉,但Update Api会返回succeed。因此,这个检查并不能保证replica成功写入,甚至这个primary shard是否能成功写入也未必能保证。。
因此,修改了语法,用了 下面的 wait_for_active_shards,因为这个更能清楚表述,而没有歧义。
例子:
PUT /test_index/test_type/1?wait_for_active_shards=1
{
"Name":"xiao ddd"
}