2012-12-17 100 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創建不受支持,也將在下一版本中獲得。

相關問題