使用NEST C#在弹性搜索中删除嵌套文档

时间:2015-05-04 14:24:18

标签: c# elasticsearch nest

我们如何使用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索引。

1 个答案:

答案 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));