作者回复: 课程中例子只是方便理解,做了很多简化。这个例子在真实情况下不会这样设计。因为本身es的事务性做的就并不是很好。 在真实情况中,很多时候会把关系型数据库和es结合起来使用。利用关系型数据库的事务性质和es的全文检索与聚合分析(es面对大量文档update的场景其实性能也不是很理想)各自的优点。 这个时候,如果有同步数据库和es中数据的场景,就可以用数据库的version或者last update时间戳来作为外部的version,实现冲突的检测。
作者回复: 不排除第一个人的数据被第一个人错误的抹掉。例如课程中的库存数据,-1就导致不对了
作者回复: basic许可应该不会到期,你应该打开了黄金或者白金账号吧? 生产环境中,你需要购买许可。开发学习,你可以用docker-compose安装并清楚数据,即可继续使用
作者回复: 你写入数据吞吐很高么?分词很复杂?如果确实写入压力很大,可以通过增加主分片数,将分片分散到不同的机器,实现水平扩展
作者回复: 你的es 是什么版本?7.1吗?
作者回复: 一样的道理,如果seq和primary 不一致,需要提供正确的信息版本好删除。在程序中,需要做检测,例如,字段被更新了,已经不符合删除条件了,就应该取消删除,否则就通过新的版本信息,重新尝试删除
作者回复: 你可以重试没有写入的,回滚天然不支持这样的操作
作者回复: 你可以看看 https://www.elastic.co/guide/en/elasticsearch/client/java-rest/7.1/java-rest-high.html