ElasticSearch 2.0 NEST 迁移
ElasticSearch 2.0 NEST migration
之前用过elastic 1.7。迁移到 2.0 后,我遇到了几个问题(这是我目前最关注的问题):映射属性、json 序列化 .
我使用了在 2.0 版本中找不到的下一个属性 - ElasticProperty
和 属性 Name, Boost, OptOut
。
我在新 api 中找不到 settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset)
的替代品。
我找到的唯一有用的文档是 breaking changes. Sadly, but nest examples 已过时。可能我漏掉了一些简单的东西,请指出正确的方向。
编辑
因此,Name, Boost
是 String
属性的一部分
广告 1。
这部分已经重构,现在您不能使用 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;}
等等
广告 2。
您可以通过将自定义 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;
}
}
希望它能让您的迁移更轻松 :)
之前用过elastic 1.7。迁移到 2.0 后,我遇到了几个问题(这是我目前最关注的问题):映射属性、json 序列化 .
我使用了在 2.0 版本中找不到的下一个属性 - ElasticProperty
和 属性 Name, Boost, OptOut
。
我在新 api 中找不到 settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset)
的替代品。
我找到的唯一有用的文档是 breaking changes. Sadly, but nest examples 已过时。可能我漏掉了一些简单的东西,请指出正确的方向。
编辑
因此,Name, Boost
是 String
属性的一部分
广告 1。
这部分已经重构,现在您不能使用 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;}
等等
广告 2。
您可以通过将自定义 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;
}
}
希望它能让您的迁移更轻松 :)