Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }