按ID从ElasticSearch索引中删除文档

6qftjkof  于 2023-02-03  发布在  ElasticSearch
关注(0)|答案(3)|浏览(168)

我在ElasticSearch中有一个文档。我正在尝试实现一个方法,在该方法中,我可以指定一个字符串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");
            }

"我错过了什么"

ykejflvf

ykejflvf1#

我认为这里的问题是NEST不能正确地推断文档的Id属性,因为您没有指定类型。
如果可能,请尝试以下操作:

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

lnlaulya2#

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

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

(其中1是“_id”值)
如果你还没有定义Map,就使用“dynamic”。否则我建议你使用实际的类型。

nqwrtyyt

nqwrtyyt3#

await _elasticClient.DeleteAsync(new DeleteRequest(indexName, documentId));

相关问题