Свойство POCO Id не найдено

У меня класс типа poco определен так:

 [Elastictype(Name="doc", IdProperty="Id")]
 public class Doc{
      public string Id;
      public string Name;
      ....
 }

Однако вместо этого в моем запросе .Index () он по-прежнему генерирует случайный хэш-идентификатор, хотя свойство id сохраняется в документе.

Я пробовал это с определенным Elastictype и без него, результаты все те же.

Единственный способ заставить его работать - это явно указать идентификатор в запросе .Index, который я не смог найти возможным в массовых операциях. Может ли кто-нибудь сказать мне, почему мой идентификатор POCO не идентифицируется NEST и как его включить? Или как явно указать идентификатор в моем массовом запросе?


person Control Freak    schedule 29.09.2014    source источник
comment
Constrol Freak Я думаю, это потому, что вы используете fields, а не properties, можете ли вы опубликовать проблему на github по этому поводу, чтобы мы могли обсудить поддержку этого там?   -  person Martijn Laarman    schedule 13.10.2014


Ответы (1)


Вы можете явно установить идентификатор во время массовой операции. В прошлом я успешно использовал следующее:

  var docs = new List<Doc>();
  var bulkDescriptor = new BulkDescriptor;

  // assumes that docs has been populated...
  foreach(var doc in docs)
  {
      bulkDescriptor.Index<Doc>(op => op.Object(doc).Id(doc.Id));
  }

  //assumes using an already defined ElasticsearchClient
  var response = Client.Bulk(descriptor => bulkDescriptor);
person Paige Cook    schedule 30.09.2014
comment
На самом деле смог понять это - Bulk w / id, но я все еще хотел бы знать, почему инициализатор атрибута не распознает idproperty - person Control Freak; 30.09.2014