我之前使用过弹性1.7。迁移到2.0后,我遇到了几个问题(这里是我目前最关注的问题):映射属性, json序列化。
我使用了我无法在2.0版本中找到的下一个属性 - c.Address
c.Row
c.Column
,其属性为ElasticProperty
。
我无法在新的api中找到Name, Boost, OptOut
的替代品。
我找到的唯一有用的文件是breaking changes。可悲的是,但是nest examples已经过时了。可能我错过了一些简单的事情,请指出我正确的方向。
修改
因此,settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset)
是Name, Boost
属性
答案 0 :(得分: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;
}
}
我希望它能让您的迁移变得更轻松:)