public GetElasticLogRecordsResult GetElasticLogRecords(LogDataFilter filter) { var sw = new Stopwatch(); sw.Start(); var raw = logDataAccess.GetLogData(filter); var result = new GetElasticLogRecordsResult { Records = raw.Select(ToElasticLogRecord).ToList(), TotalCount = raw.Count }; // Stop execution time including conversion of record result.ExecutionTime = sw.Elapsed; return(result); }
public IList <ElasticRawLogRecord> GetLogData(LogDataFilter filter) { var takeNumber = 10000; var scrollTimeout = new Time("1m"); var retVal = new List <ElasticRawLogRecord>(); var query = BuildQuery(filter); var initialResponse = client.Search <ElasticRawLogRecord>(s => s .AllTypes() .Query(q => query) .Sort(sort => sort.Ascending($"@{nameof(ElasticRawLogRecord.Timestamp).ToLowerCamelCase()}")) .From(0) .Take(takeNumber) .Scroll(scrollTimeout) ); // Add the first batch to the result retVal.AddRange(GetLogRecords(initialResponse)); // Get the rest of the data var scrollid = initialResponse.ScrollId; var isScrollSetHasData = true; while (isScrollSetHasData) { var loopingResponse = client.Scroll <ElasticRawLogRecord>(scrollTimeout, scrollid); if (loopingResponse.IsValid) { retVal.AddRange(GetLogRecords(loopingResponse)); scrollid = loopingResponse.ScrollId; } isScrollSetHasData = loopingResponse.Documents.Any(); } client.ClearScroll(new ClearScrollRequest(scrollid)); return(retVal); }
private static BoolQuery BuildQuery(LogDataFilter filter) { DateRangeQuery timestampQuery = null; if (filter.StartDate.HasValue && filter.EndDate.HasValue) { timestampQuery = new DateRangeQuery { Field = $"@{nameof(ElasticRawLogRecord.Timestamp).ToLowerCamelCase()}", GreaterThanOrEqualTo = new DateMathExpression(filter.StartDate.Value), LessThanOrEqualTo = new DateMathExpression(filter.EndDate.Value) }; } var query = new BoolQuery(); if (timestampQuery != null) { query.Filter = new QueryContainer[] { timestampQuery }; } return(query); }
public async Task <List <PrimaerdatenAufbereitungItem> > GetPrimaerdatenReportRecords(LogDataFilter filter) { var client = GetRequestClient <GetPrimaerdatenReportRecordsRequest>(string.Empty, 3600); var request = new GetPrimaerdatenReportRecordsRequest { Filter = filter }; var result = await client.GetResponse <GetPrimaerdatenReportRecordsResponse>(request); return(result.Message.Items); }
public Task <List <PrimaerdatenAufbereitungItem> > GetPrimaerdatenReportRecords(LogDataFilter filter) { var dataItems = sqlDataAccess.GetPrimaerdatenaufbereitungItemsByDate(filter.StartDate.GetValueOrDefault(new DateTime(2018, 1, 1)), filter.EndDate.GetValueOrDefault(DateTime.Now)); return(dataItems); }