我们如何使用Nest库仅删除嵌套对象而不删除弹性搜索中的索引。
public class Make
{
public string MakeId {get;set;}
public string MakeName {get;set;}
public string Address { get;set;}
[ElasticProperty(Type = FieldType.Nested)]
public List<Cars> Models {get;set;}
}
在上面的映射中,我想删除一个模型条目而不删除整个索引。
我尝试使用DeleteByQuery删除,但它会删除整个Make索引。
答案 0 :(得分:1)
如果您不介意脚本,可以尝试:
var updateResponse = client.Update<Make>(descriptor => descriptor
.Id(documentId)
.Script("ctx._source.models.remove(0)")
.Lang("groovy"));
或没有脚本
var make = new Make {Id = "1", Models = new List<Cars>
{
new Cars{Name = "test"},
new Cars{Name = "test2"}
}};
make.Models.RemoveAt(1);
var updateResponse = client.Update<Make>(descriptor => descriptor
.Id("1")
.Doc(make));