2016-02-19 67 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 –