2016-02-19 140 views
1

我以前使用過彈性1.7。遷移到2.0後,我遇到了幾個問題(這裏是我目前最關注的問題):映射屬性,json序列化ElasticSearch 2.0 NEST遷移

我已經使用了我在2.0版本中找不到的下一個屬性 - ElasticProperty,屬性Name, Boost, OptOut

我無法在新的api中找到settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset)的替代品。

我發現的唯一有用的文件是breaking changes。可悲的是,但nest examples已經過時。可能我錯過了一些容易的事,請指出我的方向。

編輯

所以,Name, BoostString屬性

回答

6

的Ad1的一部分。

此部分已被重構,現在您不能使用ElasticProperty。它已被替換爲一組新屬性(如在breaking changes notes描述)

例如

[ElasticProperty(Name="name", Boost = 1.1, OptOut = true)] 
public string Name {get; set;} 

它相當於

[String(Name="name", Boost = 1.1, Ignore = true)] 
public string Name {get; set;} 

Ad2的。

您可以通過自定義JsonNetSerializer傳遞給ConnectionSettings,就這樣修改您的序列化設置:

var connectionPool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
var settings = new ConnectionSettings(connectionPool, connectionSettings => new MyJsonNetSerializer(connectionSettings)) 
    .DefaultIndex(indexName) 
    .DisableDirectStreaming() 
    .PrettyJson(); 

public class MyJsonNetSerializer : JsonNetSerializer 
{ 
    public MyJsonNetSerializer(IConnectionSettingsValues settings) : base(settings) 
    { 
    } 

    protected override void ModifyJsonSerializerSettings(Newtonsoft.Json.JsonSerializerSettings settings) 
    { 
     settings.DateParseHandling = DateParseHandling.DateTimeOffset; 
    } 
} 

更多細節herehere

我希望這會令你的遷移變得容易:)

+0

QueryDescriptor 不NEST 2.X可用,@Rob,你能回答這個http://stackoverflow.com/questions/38136094/what-is -the-替代到querydescriptor巢-2-X –