2014-05-21 84 views
4

我有一個彈性搜索的文檔。 我想實現一個方法,我可以使用NEST客戶端指定一個字符串ID從索引中刪除一個文檔。從ElasticSearch索引中刪除一個文檔,編號爲

這是索引的文檔,我想刪除:

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

我在想什麼?

+0

我一無所知窩,但它似乎你缺少類型類型(列表)......對於ES關鍵是指數/類型/ ID。 – Alcanzar

+0

我在哪裏以及如何指定類型和ID?我正在尋找這個語法和例子。我的回答低於 – kheya

+0

如果您在這裏查看http://searchcode.com/codesearch/view/26606126,您會看到DeleteById(),我沒有在我的Nest客戶端中看到它。我有刪除,DeleteIndex,DeleteByQuery()等 – kheya

回答

5

我相信這裏的問題是,NEST無法正確推斷文檔的Id屬性,因爲您沒有指定類型。

如果可能的話,試試這個:

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

對不起。這不起作用。 – kheya

+0

不適用於我。 – joelc

+0

它確實爲我工作,所以至少值得一試,如果你有這個問題。 –