【问题标题】:Indexing dynamic objects in elasticsearch nest在弹性搜索嵌套中索引动态对象
【发布时间】:2017-07-19 06:01:04
【问题描述】:

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

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

动态类/动态对象可以使用这个吗?请举例说明如何做到这一点。

【问题讨论】:

    标签: class object elasticsearch dynamic nest


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多