2017-02-28 45 views
0

彈性搜索通常與預定義的類的工作原理。我如何使用動態類。 例如:假設我要搜索一個特定的領域,然後索引動態對象

var result = clientConnection.Search<**TicketData**>(

s => s 
.Aggregations(

a => a 
    .DateRange(

"L1", d => d 
     .Field(p => p.timestamp) 
      .Ranges(
      r => r.To("2016-10-09T15:01:06+00:00"), 
      r => r.From("2016-09-27T02:09:17+00:00") 
     ) 
    ) 
) 
); 

這裏ticketdata類必須預先定義。我們可以有類似的東西嗎

var result = clientConnection.Search<ANYDYNAMICCLASS>(s => s 

.Aggregations(a => a 

.DateRange("L1", d => d 

.Field(p => p.timestamp) 

      .Ranges(
      r => r.To("2016-10-09T15:01:06+00:00"), 
      r => r.From("2016-09-27T02:09:17+00:00") 
     ) 
    ) 
) 
); 

動態類/動態對象可以用這個嗎?請舉例說明如何做到這一點。

回答

1

Elasticsearch可與JSON文件,它不依賴於C#波蘇斯。然而,像C#這樣的強類型語言,將Elasticsearch中的文檔建模爲應用程序中的POCO是非常有意義的,但您不必這樣做。

例如,我們可以使用dynamic作爲文檔類型進行搜索,並使用.Index().Type()方法來指定的索引和類型,分別

var result = client.Search<dynamic>(s => s 
    .Index("index-name") 
    .Type("type-name") 
    .Aggregations(a => a 
     .DateRange("L1", d => d 
      .Field("timestamp") 
      .Ranges(
       r => r.To("2016-10-09T15:01:06+00:00"), 
       r => r.From("2016-09-27T02:09:17+00:00") 
      ) 
     ) 
    ) 

);

您還可以與Elasticsearch.Net直接通過客戶端上的.LowLevel物業工作,並與流,字節或字符串正常工作。

+0

是,這一工程羅斯!非常感謝 – Nilanjana