繁体   English   中英

更新 ElasticSearch Document 的同时保持其外部版本不变?

[英]Update ElasticSearch Document while maintaining its external version the same?

我想更新 ElasticSearch 文档,同时保持文档的版本相同。 我正在使用 version_type=external,如index_ 文档版本控制部分所示 该部分所示,通常会阻止使用另一个相同版本的文档更新文档:“如果提供的值小于或等于存储文档的版本号,则会发生版本冲突并且索引操作将失败。”

我想保持版本不变的原因是,当我向该对象添加新标签时,我没有创建对象的新版本(存储在我的数据库中),但我希望新标签显示在我的 ElasticSearch 索引中. 这可以用 ElasticSearch 实现吗?

我尝试删除该文档,然后添加一个具有相同 ID 和版本的新文档,但这仍然给我以下异常:

VersionConflictEngineException[[myindex][2] [mytype][6]: 版本冲突,当前1 ,提供1 ]

仅供参考,我正在使用 PHP Elastica(使用方法$type->deleteDocument($doc);$type->addDocument($doc); ),但这个问题通常适用于 ElasticSearch。

index.gc_deletes保留已删除文档信息的时间由index.gc_deletes参数控制。 默认情况下,这个时间是1m 因此,理论上,您可以将此时间减少到0s ,等待一秒钟,删除文档,索引具有相同版本的新文档,并将index.gc_deletes设置回1m 但目前由于bug只能在 master 上工作。 如果您使用的是旧版本的index.gc_deletes ,您将无法在不先关闭索引的情况下更改index.gc_deletes

elasticsearch.org 网站上有一篇很好的博客文章,详细描述了 elasticsearch 如何处理版本。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM