public IActionResult AuditTrailSearch(string searchString, int skip, int amount)
        {
            var auditTrailViewModel = new AuditTrailViewModel
            {
                Filter = searchString,
                Skip   = skip,
                Size   = amount
            };

            if (skip > 0 || amount > 0)
            {
                var paging = new AuditTrailPaging
                {
                    Size = amount,
                    Skip = skip
                };

                auditTrailViewModel.AuditTrailLogs = _auditTrailProvider.QueryAuditLogs(searchString, paging).ToList();

                return(View(auditTrailViewModel));
            }

            auditTrailViewModel.AuditTrailLogs = _auditTrailProvider.QueryAuditLogs(searchString).ToList();
            return(View(auditTrailViewModel));
        }
        public IEnumerable <T> QueryAuditLogs(string filter = "*", AuditTrailPaging auditTrailPaging = null)
        {
            var from = 0;
            var size = 10;

            EnsureAlias();
            if (auditTrailPaging != null)
            {
                from = auditTrailPaging.Skip;
                size = auditTrailPaging.Size;
                if (size > 1000)
                {
                    // max limit 1000 items
                    size = 1000;
                }
            }
            var searchRequest = new SearchRequest <T>(Indices.Parse(_alias))
            {
                Size  = size,
                From  = from,
                Query = new QueryContainer(
                    new SimpleQueryStringQuery
                {
                    Query = filter
                }
                    ),
                Sort = new List <ISort>
                {
                    new FieldSort {
                        Field = TimestampField, Order = SortOrder.Descending
                    }
                }
            };

            var searchResponse = _elasticClient.Search <T>(searchRequest);

            return(searchResponse.Documents);
        }