В UpdateDescriptor<T, TPartial>
отсутствует метод .Id()
, поскольку идентификатор является обязательным параметром для вызова API обновления, поэтому это ограничение применяется через конструкторы.
Первыйпараметр .Update<T>(...)
представляет собой DocumentPath<T>
, из которого можно получить индекс, тип и идентификатор для вызова API обновления.Если ProjectModel
CLR POCO имеет свойство Id
со значением, оно будет использоваться для идентификатора вызова.Например,
public class ProjectModel
{
public int Id { get; set; }
}
var client = new ElasticClient();
var projectModel = new ProjectModel { Id = 1 };
var updateResponse = client.Update<ProjectModel>(projectModel, i => i
.Index("attachment_index")
.Type("attachments")
.Script(script => script
.Source("ctx._source.fileInfo.fileViewCount= ctx._source.fileInfo.fileViewCount + 1"))
);
, что приводит к
POST http://localhost:9200/attachment_index/attachments/1/_update
{
"script": {
"source": "ctx._source.fileInfo.fileViewCount= ctx._source.fileInfo.fileViewCount + 1"
}
}
Если вы хотите явно указать Id, вы можете передать значение для DocumentPath<T>
var updateResponse = client.Update<ProjectModel>(1, i => i
.Index("attachment_index")
.Type("attachments")
.Script(script => script
.Source("ctx._source.fileInfo.fileViewCount= ctx._source.fileInfo.fileViewCount + 1"))
);