索引elasticsearch嵌套中的动态对象

时间:2017-02-28 10:10:51

标签: class object elasticsearch dynamic nest

弹性搜索通常适用于预定义的类。我如何使用动态类。 例如:假设我想搜索特定的字段,然后

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 个答案:

答案 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,并使用流,字节或字符串。