2016-01-11 58 views
0

我想禁用源,因爲它最初完成here。我不知道如何實現,如樣品中類似如何禁用源字段並使用Nest存儲?

PUT tweets 
{ 
    "mappings": { 
    "tweet": { 
     "_source": { 
     "enabled": false 
     } 
    } 
    } 
} 

我下面嘗試,但是當我進入http://localhost:9200/_plugin/head/;我可以看到所有的屬性都存儲了。我希望只存儲和索引id和名稱屬性。

var node = new Uri("http://localhost:9200"); 
var settings = new ConnectionSettings(node, defaultIndex: "mydatabase");    
var client = new ElasticClient(settings); 
var createIndexResult = client.CreateIndex("mydatabase"); 
    var mapResult = client.Map<Product>(c => c.MapFromAttributes().SourceField(s=>s.Enabled(false)).IgnoreConflicts().Type("product").Indices("mydatabase")); 


client.Index(sampleproduct); 



    [ElasticType(Name ="product", IdProperty = "ProductId")] 
    [Table("Product")] 
    public partial class Product 
    {  

    [ElasticProperty(Name = "id",Index = FieldIndexOption.NotAnalyzed, Store = true)] 
    public int ProductId { get; set; } 

     [ElasticProperty(Index = FieldIndexOption.Analyzed, Store = true)] 
    public string Name { get; set; } 

    [ElasticProperty(Index = FieldIndexOption.No, Store = false)] 
    public int? ProductTypeId { get; set; } 

    [ElasticProperty(Index = FieldIndexOption.No, Store = false)] 
    public int? ManufacturerId { get; set; } 

    } 

編輯:創建索引後沒有添加任何文檔,索引元數據看起來像在圖像中。我沒有看到任何源啓用虛假。 enter image description here

EDIT2:先改變創建索引後再映射。名稱字段正如圖像中顯示store = true,但沒有存儲值。我調試,我很肯定路過值,其中I指數的sampleproduct

enter image description here

回答

2

首先,您需要,然後添加映射索引文件。只有這樣你才能看到預期的映射。通過在沒有映射的情況下首先索引,就可以使用默認選項動態創建映射(源被啓用)。

+0

我剛剛嘗試過,但它並沒有真正的幫助。我仍然可以看到商店=沒有任何屬性。我更新了我的問題和我的嘗試。你的意思是像上面那樣嗎? – batmaci

+0

不,你仍然做錯了。首先創建索引,然後創建映射並且僅在那個索引文件之後。在您更新的問題中,您在創建索引之前創建了映射,這是錯誤的。 – bittusarkar

+1

順便說一句,您可以在創建索引的同時添加映射。但@bittusarkar是正確的,首先創建索引(可選擇同時指定映射)。 –

相關問題