2016-11-20 76 views
3

我試圖使用NEST 5.x的預發行版本5.x的Elasticsearch創建索引創建我有來自2.x的示例,其中顯示瞭如何使用ElasticClient.CreateIndex方法創建索引。以下是我的示例代碼。使用Elasticsearch指數NEST 5.x的

ESnode = new Uri("http://localhost:9200"); 
Nodesettings = new ConnectionSettings(ESnode); 
Client = new ElasticClient(Nodesettings); 

但是,當我在下面輸入時,沒有自動補全可用。

Client.CreateIndex(c => c. 

我能夠使用下面的代碼成功地獲得節點的健康狀況。

var res = Client.ClusterHealth(); 
Console.WriteLine("Status:" + res.Status); 

我具有用於我所定義的類結構和打算使用自動映射方法的複雜的文檔映射。因此,我試圖以編程方式創建索引以避免手動創建索引。

我試着用一些很老的版本NEST(1.x中)和我能夠得到自動完成的createIndex爲。但是v2.4x和5.x都沒有提供自動完成功能。有沒有創建索引的新方法?請告訴我。

感謝

回答

6

您需要提供一個名稱索引,除了提供附加的索引創建選項

var createIndexResponse = client.CreateIndex("index-name", c => c 
    .Settings(s => s 
     .NumberOfShards(1) 
     .NumberOfReplicas(0) 
    ) 
    .Mappings(m => m 
     .Map<Conference>(d => d 
      .AutoMap() 
     ) 
    ) 
); 
+0

感謝拉斯委託。我正試圖刪除這個問題,因爲我通過審判得出了這個問題。我能夠創建索引。但我有第二個問題。當我使用Automap時,甚至嵌套屬性也被映射爲簡單屬性。另外,我注意到的第二個問題是所有的屬性都按屬性名稱排序(當我嘗試GET映射時)。我如何糾正這些? – askids

+0

當使用'.AutoMap()'(除了NEST中已知的「Attachment」類型)之外,默認情況下,CLR類型將被映射爲'object'字段映射。爲了映射爲嵌套類型,你需要用'.Properties()'覆蓋automapping:https://www.elastic.co/guide/en/elasticsearch/client/net-api/5.x/自動map.html#自動映射與 - 覆蓋。關於json中的屬性名稱,他們不能保證json中的任何特定順序,因此不應該依賴它。 –