通过id从ElasticSearch索引中删除文档

时间:2014-05-21 18:59:52

标签: elasticsearch nest

我有弹性搜索的文档。 我正在尝试实现一种方法,我可以指定一个字符串id来使用NEST客户端从索引中删除文档。

这是我要删除的索引文档:

"hits":[{"_index":"movies","_type":"list","_id":"100","_score":0.6349302, "_source" : {
  "owner": "Bob",
  "tags": "Bobita",
  "title": "Movie clips of Bob"
}}

这是我的C#代码,它不会删除文档。它说id为NULL。

Uri localhost = new Uri("http://localhost:9200");
            var setting = new ConnectionSettings(localhost);
            setting.SetDefaultIndex("movies");
            var client = new ElasticClient(setting);

            IDeleteResponse resp = client.Delete("100");                

            if (!resp.Found)
            {
                logger.Error("Failed to delete index with id=100");
            }

我缺少什么?

2 个答案:

答案 0 :(得分:5)

我认为这里的问题是NEST无法正确推断文档的Id属性,因为您没有指定类型。

如果可能的话,请尝试以下方法:

client.Delete<YourMovieType>("100");

答案 1 :(得分:0)

在Elasticsearch 7.0上使用NEST 7.x,以下代码有效:

 var x = _client.Delete<dynamic>(1);

(其中1是' _id '值)

如果尚未定义映射,请使用“ 动态”。否则,我建议使用实际类型。