ElasticSearch 2.0 NEST迁移

时间:2016-02-19 10:16:00

标签: elasticsearch nest elasticsearch-2.0

我之前使用过弹性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属性

的一部分

1 个答案:

答案 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;
    }
}

更多详情herehere

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