在弹性搜索嵌套中索引动态对象

Indexing dynamic objects in elasticsearch nest

Elastic 搜索通常使用预定义的 classes 。我如何使用动态 classes。 例如:假设我想搜索一个特定的字段然后

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")
        )
    )
)
);

此处必须预先定义票据数据class。我们可以有类似

的东西吗
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")
        )
    )
)
);

动态 class/ 动态对象可以使用它吗?请举例说明如何完成。

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,也可以使用流、字节或字符串。