elasticsearch 按id从ElasticSearch索引中删除文档,elasticsearch,nest,elasticsearch,Nest" /> elasticsearch 按id从ElasticSearch索引中删除文档,elasticsearch,nest,elasticsearch,Nest" />

elasticsearch 按id从ElasticSearch索引中删除文档

elasticsearch 按id从ElasticSearch索引中删除文档,elasticsearch,nest,elasticsearch,Nest,我有一份文件在弹性搜索中。 我正在尝试实现一种方法,在该方法中,我可以指定一个字符串id,以便使用NEST client从索引中删除文档 这是我要删除的索引文档: "hits":[{"_index":"movies","_type":"list","_id":"100","_score":0.6349302, "_source" : { "owner": "Bob", "tags": "Bobita", "title": "Movie clips of Bob" }} 这是我的C代

我有一份文件在弹性搜索中。 我正在尝试实现一种方法,在该方法中,我可以指定一个字符串id,以便使用NEST client从索引中删除文档

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

"hits":[{"_index":"movies","_type":"list","_id":"100","_score":0.6349302, "_source" : {
  "owner": "Bob",
  "tags": "Bobita",
  "title": "Movie clips of Bob"
}}
这是我的C代码,它不会删除文档。它说id是空的

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");
            }

我遗漏了什么?

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

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

client.Delete(“100”);

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

 var x = _client.Delete<dynamic>(1);
var x=\u client.Delete(1);
(其中1是“_id”值)


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

我对NEST一无所知,但似乎您缺少类型(列表)。。。ES的键是index/type/id。在哪里以及如何指定类型和id?我正在寻找这种语法和示例。下面是我的回答如果你看这里,你会看到DeleteById(),这是我的Nest客户端中没有的。我有Delete、DeleteIndex、DeleteByQuery()等,它们确实对我有用,所以如果你有这个问题,至少值得一试。在NEST 5.x中不适用于我。它保持文档的原样。如何获取id?