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, BoostString 属性的一部分

广告 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;
    }
}

更多详情here and here

希望它能让您的迁移更轻松 :)