弹性搜索通常适用于预定义的类。我如何使用动态类。 例如:假设我想搜索特定的字段,然后
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")
)
)
)
);
动态类/动态对象可以使用吗?请举例说明如何完成。
答案 0 :(得分:1)
Elasticsearch与JSON文档一起使用,它与C#POCO无关。但是,使用类似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")
)
)
)
);
您也可以直接通过客户端上的.LowLevel
属性使用Elasticsearch.Net,并使用流,字节或字符串。