Elasticsearch Nest не учитывает index = not_indexed в поле POCO?

я только что узнал из документации, что мы должны сказать ему использовать атрибуты сопоставления и вручную создать индекс, прежде чем индексировать.

однако документация не соответствует новейшей версии кода. (до релиза).

http://nest.azurewebsites.net/nest/indices/put-mapping.html

var response = this.ConnectedClient.Map<ElasticSearchProject>();

вызов выше в новом коде принимает 1 аргумент в методе Map(). документация не требует никаких аргументов.

что должно содержаться в этом методе? кажется, что есть много вариантов, но я не знаю, какие из них использовать.


person bigerock    schedule 08.05.2014    source источник


Ответы (1)


Ознакомьтесь с документацией по Создание индексов. Я думаю, что-то вроде этого будет работать для того, чего вы пытаетесь достичь. Кроме того, он создаст индекс и применит сопоставление за один вызов к вашему экземпляру Elasticsearch.

 client.CreateIndex("myindexname", c => c
  .NumberOfReplicas(0)
  .NumberOfShards(1)
  .Settings(s=>s
      .Add("merge.policy.merge_factor","10")
      .Add("search.slowlog.threshold.fetch.warn", "1s")
  )   
  .AddMapping<ElasticSearchProject>(m => m.MapFromAttributes())
  .AddMapping<Person>(m => m.MapFromAttributes())
);

Строка .AddMapping<ElasticSearchProject>(m => m.MapFromAttributes()) сообщает NEST, что необходимо получить все настройки атрибутов переходов ElasticType и ElasticProperty в классе ElasticSearchProject и использовать их для создания сопоставления.

person Paige Cook    schedule 08.05.2014
comment
гений! я, должно быть, пропустил это. работал как шарм. я удалил все, кроме части .AddMapping, так как она мне не нужна. Благодарю. - person bigerock; 08.05.2014