【问题标题】:How to GET Data from Elasticsearch with a specific time range如何从 Elasticsearch 获取具有特定时间范围的数据
【发布时间】:2019-10-08 17:48:21
【问题描述】:

我的 elasticsearch 中有日期,其中包含一个字段 Timestamp 来自日期类型。 现在我将只过滤两个日期之间的结果。我正在使用 NestC#

如果时间戳在 2019 年 5 月 1 日 10:00:00 和 2019 年 5 月 5 日 23:59:59 之间,我如何获得结果?

现在我的搜索请求如下所示:

                result = ElasticClient.Search<_doc>
                (document => document
                    .Source(src => src
                        .Includes(i => i
                            .Fields(
                            p => p.Timestamp,
                            p => p.Value
                            )
                        )
                    )
                    .Query(q => q
                        .Match(m => m
                            .Field(f => f.DataRecordId)
                            .Query(search)
                        )   
                    )
                );

【问题讨论】:

    标签: c# rest elasticsearch asp.net-core


    【解决方案1】:

    您需要为此使用range query。假设日期字段使用的格式为YYYY-MM-dd HH:mm:ss,字段名称为timestamp,则以下查询将起作用:

    {
      "query": {
        "range": {
          "timestamp": {
            "gte": "2019-05-01 10:00:00",
            "lte": "2019-05-05 23:59:59"
          }
        }
      }
    }
    

    【讨论】:

    • @FrankMehlhop 您可以通过查看documentation 轻松做到这一点。
    【解决方案2】:

    如果你想过滤这个范围内的数据,试试这个:

                var result = ElasticClient.Search<_doc>
                (document => document
                    .Source(src => src
                        .Includes(i => i
                            .Fields(
                            p => p.Timestamp,
                            p => p.Value
                            )
                        )
                    )
                    .Query(q => q
                        .Bool(b => b
                            .Must(m => m
                                .DateRange(r => r
                                    .Field(p => p.Timestamp)
                                    .GreaterThanOrEquals("2019-05-01T10:00:00")
                                    .LessThanOrEquals("2019-05-05T23:59:59")
                                )
                            )
                        )
                    )
                );
    

    Date Range Query Usage

    【讨论】:

    • 它看起来不错,但在我的情况下它不起作用。我也在一些文档中找到它。你试过了吗?
    • 您能否提供更多详细信息,为什么它不适用于您的情况?
    猜你喜欢
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-15
    • 2017-11-09
    相关资源
    最近更新 更多