我有一个Elastic Search文档,结构如下:
{
"Id": 123,
"name": "MyName",
"skill": {
"skillId": 321,
"name": "Skill Name",
"description": "Skill Description"
}
}我还有一个映射到这个文档的类:
public class Person {
public int Id { get; set; }
public string name { get; set; }
public Skill skill { get; set; }
}
public class Skill{
public int skillId { get; set; }
public string name { get; set; }
public string description { get; set; }
}现在我想更新一下elastic search的技能描述:
var person = _client.Get(.......)
var newSkill = new Skill();
newSkill.skillId = person.skill.skillId;
newSkill.description = "This is a new Description"
var result = _client.Update<Person, Skill>(u => u
.IdFrom(person)
.Doc(newSkill)
.RetryOnConflict(3)
.Refresh()
);此代码不会更新person的现有技能,而是将技能属性添加到Person的根目录。
那么这里出了什么问题呢?
发布于 2015-10-07 20:40:56
您正在尝试使用ElasticSearch,就好像它是SQL一样。
您需要将新的Skill分配给Person并更新整个Person对象,如下所示:
var person = _client.Get(.......)
var newSkill = new Skill();
newSkill.name = "New Skill";
newSkill.description = "This is a new Description"
person.skill = newSkill;
var result = _client.Update<Person, Person>(u => u
.IdFrom(person)
.Doc(person)
.RetryOnConflict(3)
.Refresh()
);https://stackoverflow.com/questions/31569091
复制相似问题