Миграция ElasticSearch 2.0 NEST

Раньше я использовал эластичный 1,7. После перехода на версию 2.0 я столкнулся с несколькими проблемами (вот те, на которых я сейчас больше всего сосредоточен): сопоставление атрибутов, сериализация json.

Я использовал следующие атрибуты, которые не могу найти в версии 2.0 - ElasticPropertyсо свойством Name, Boost, OptOut .

Я не могу найти замену settitgs.SetJsonSerializerSettingsModifier(x => x.DateParseHandling = DateParseHandling.DateTimeOffset) в новом API.

Единственный полезный документ, который я нашел, это критические изменения. К сожалению, примеры Nest устарели. Возможно, я пропустил что-то легкое, пожалуйста, укажите мне правильное направление.

Изменить

Итак, Name, Boost являются частью атрибута String


person Anton Putau    schedule 19.02.2016    source источник


Ответы (1)


Ad1.

Эта часть была переработана, и сейчас вы не можете использовать 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;}

и т.п.

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

Подробнее здесь и здесь.

Я надеюсь, что это облегчит вашу миграцию :)

person Rob    schedule 19.02.2016
comment
QueryDescriptor‹T› недоступен в NEST 2.x, @Rob, можете ли вы ответить на этот stackoverflow.com/questions/38136094/ - person Saurabh Sashank; 01.07.2016