es high level client常见错误

1.org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: an id must be provided if version type or value are set;

indexRequest.versionType(VersionType.EXTERNAL)设置版本控制为外部值控制后(默认用从1开始的内部版本控制),必须显式指定版本值,即indexRequest.version(1)。因为版本值默认是-3,而外部值版本控制要求版本值必须大于等于0,所以必须同时指定一个大于等于0的版本值。在启用外部值版本控制后,必须显式指定文档id,否则就会报上面的错

另外,如果显式指定版本值的话,即indexRequest调用version(long version)的话,必须再调用versionType(VersionType versionType)方法,否则对不上啊,还是那句话,默认是采用内部版本控制。

2.org.elasticsearch.ElasticsearchStatusException: Elasticsearch exception [type=version_conflict_engine_exception, reason=[_doc][1]: version conflict, current version [0] is higher or equal to the one provided [0]]

显式指定版本值时,系统会检查传递给索引请求的版本号是否大于当前存储文档的版本,而不是检查匹配的版本号。如果为true,则将索引文档并使用新版本号。如果提供的值小于或等于存储文档的版本号,则会发生版本冲突,索引操作将失败。

可在Dev Tools Console中执行

put /twitter/_doc/1?version_type=external&version=4

{"message":"显式指定外部版本控制及版本号和文档id,版本号必须大于当前文档的版本号"}

猜你喜欢

转载自www.cnblogs.com/koushr/p/9490531.html