Как получить данные из Elasticsearch с определенным диапазоном времени - PullRequest
0 голосов
/ 22 мая 2019

У меня есть даты в моем asticsearch , которые включают в себя поле Метка времени от даты типа. Теперь я буду фильтровать результаты только между двумя датами . Я использую Гнездо и C # .

Как получить результаты, если отметка времени находится между 1-м числами 2019 года, 10:00:00 и 5-м числами числа 2019 года, 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)
                        )   
                    )
                );

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Если вы хотите отфильтровать данные в этом диапазоне, попробуйте следующее:

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

Использование запроса диапазона дат

0 голосов
/ 22 мая 2019

Для этого нужно использовать запрос диапазона .Если предположить, что для поля даты используется формат YYYY-MM-dd HH:mm:ss и имя поля timestamp, будет работать следующий запрос:

{
  "query": {
    "range": {
      "timestamp": {
        "gte": "2019-05-01 10:00:00",
        "lte": "2019-05-05 23:59:59"
      }
    }
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...