2012-12-17 44 views
2

我正在使用elasticsearch并通过NEST驱动程序从C#访问它。我需要对我通过NEST驱动程序添加和更新的文档进行一些并发控制。 Here是指向相应弹性搜索功能的链接,但我无法找到关于如何使用NEST驱动程序使用文档版本的任何信息。elasticsearch使用NEST:如何使用文档版本控制?

我试图设置一个mapping,希望“_version”属性可以从索引文档(没有序列化)反序列化,但没有运气。

有人能够做我想做的事吗?这甚至有可能吗?

+0

对于那些后来写到的关于在Elasticsearch和NEST中使用乐观并发的文章 - http://forloop.co.uk/blog/optimistic-concurrency-with-elasticsearch-and-nest –

+0

优秀文章。这正是我近3年前遇到这个问题时所做的。我甚至创作了NEST的OpType支持以使其工作。很高兴有人认为它有用。 –

回答

2

_version的是,你可以访问使用result.DocumentsWithMetaData这暴露了一个IEnumerable<Hit<YourDto>>Hit<YourDto>>.Version物业的元数据属性。

如果没有指定Elasticsearch,它将自动增加版本号。

您可以指定自己的预期的版本,当你索引在这里看到的测试: https://github.com/Mpdreamz/NEST/blob/master/src/Nest.Tests.Unit/Core/Versioning/VersioningTests.cs

从ES文档我一直没能找到关于如何指定在GETScript Update预期版本一提API。将不得不深入潜水,以确保它不需要那里。

http://www.elasticsearch.org/blog/2011/02/08/versioning.html上提到的op_type创建不受支持,也将在下一版本中获得。