2017-02-03 45 views
0

我使用了NEST客戶端的語法如下:NEST AGGS集合是隻讀

_server.Search<Document>(s => s.Index(_config.SearchIndex) 
.Query(q => q.MatchAll(p => p)).Aggregations(
    a => a 
    .Terms("type", st => st 
     .Field(p => p.Type) 
    ))); 

不過,我不斷收到以下異常

A first chance exception of type 'System.NotSupportedException' occurred in mscorlib.dll 

    Additional information: Collection is read-only. 

似乎只有當我出現m使用聚合,字段類型有以下映射:

[Keyword(Name = "Type")] 
    public string Type { get; set; } 
+0

你能告訴我你是怎麼訪問的結果,是你試圖改變結果對象? – pratikvasa

+0

您使用的是哪個版本的NEST,以及您定位的是哪個版本的Elasticsearch? –

+0

我有同樣的問題..可以解決這個問題。問題在於響應的反序列化。 JSON.NET中的異常來源。 @Imran Azad,你最終怎麼解決這個問題? –

回答

0

我會仔細檢查N您正在使用的EST和Elasticsearch.Net。我只是想下面的例子與Elasticsearch 5.1.2和5.0.1 NEST並沒有看到問題

void Main() 
{ 
    var pool = new SingleNodeConnectionPool(new Uri("http://localhost:9200")); 
    var defaultIndex = "default-index"; 
    var connectionSettings = new ConnectionSettings(pool) 
      .DefaultIndex(defaultIndex); 

    var client = new ElasticClient(connectionSettings); 

    if (client.IndexExists(defaultIndex).Exists) 
     client.DeleteIndex(defaultIndex); 

    client.CreateIndex(defaultIndex, c => c 
     .Mappings(m => m 
      .Map<Document>(mm => mm.AutoMap()) 
     ) 
    ); 

    var documents = Enumerable.Range(1, 100).Select(i => 
     new Document 
     { 
      Type = $"Type {i % 5}" 
     } 
    ); 

    client.IndexMany(documents); 

    client.Refresh(defaultIndex); 

    var searchResponse = client.Search<Document>(s => s 
     .Index(defaultIndex) 
     .Query(q => q.MatchAll(p => p)) 
     .Aggregations(a => a 
      .Terms("type", st => st 
       .Field(p => p.Type) 
      ) 
     ) 
    ); 

    foreach (var bucket in searchResponse.Aggs.Terms("type").Buckets) 
     Console.WriteLine($"key: {bucket.Key}, count {bucket.DocCount}"); 
} 

public class Document 
{ 
    [Keyword(Name = "Type")] 
    public string Type { get; set; } 
} 

這個輸出

key: Type 0, count 20 
key: Type 1, count 20 
key: Type 2, count 20 
key: Type 3, count 20 
key: Type 4, count 20 
+0

非常感謝你,我不知道我做了什麼,但它現在似乎正在工作! –