1

我以前使用过弹性 1.7。迁移到 2.0 后,我遇到了几个问题(这是我目前最关注的问题):映射属性json 序列化

我使用了在 2.0 版本中找不到的下一个属性 - ElasticProperty带有 property Name, Boost, OptOut

settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset)我在新的 api 中找不到替代品。

我发现的唯一有用的文档是破坏性更改。可悲的是,但是嵌套示例已经过时了。可能我错过了一些简单的事情,请指出正确的方向。

编辑

所以, Name, BoostString属性的一部分

4

1 回答 1

6

广告1。

这部分已经重构,现在你不能使用ElasticProperty. 它已被一堆新属性所取代(如重大更改说明中所述)

例如

[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。

您可以通过将 custom 传递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;
    }
}

更多细节在这里这里

我希望它能让你的迁移更容易:)

于 2016-02-19T10:39:16.727 回答