gpt4 book ai didi

elasticsearch - 使用NEST更新ElasticSearch中的子对象

转载 作者:行者123 更新时间:2023-12-03 00:20:17 24 4
gpt4 key购买 nike

我有一个具有以下结构的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; }
}

现在,我想更新关于 flex 搜索的技能描述:
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()
);

此代码不会更新人员的现有技能,而是将“技能”属性添加到人员的根目录。

那这里怎么了?

最佳答案

您正在尝试像使用SQL一样使用ElasticSearch。

您需要将新的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()
);

关于elasticsearch - 使用NEST更新ElasticSearch中的子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31569091/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com