public FilterGroup(ElasticSearchService <T> service, string name)
        {
            if (!service.PostFilterGroups.ContainsKey(name))
            {
                service.PostFilterGroups[name] = new FilterGroupQuery();
            }

            _filterGroup = service.PostFilterGroups[name];
        }
        public IFilterGroup <T> And <TType>(Expression <Func <T, TType[]> > fieldSelector, TType filterValue, bool raw)
        {
            _filterGroup.Filters.Add(
                new Filter(
                    ElasticSearchService <T> .GetFieldName(fieldSelector),
                    filterValue,
                    typeof(TType),
                    raw,
                    Operator.And));

            return(this);
        }
        public IFilterGroup <T> Or <TType>(Expression <Action <T> > fieldSelector, TType[] filterValues, bool raw)
        {
            _filterGroup.Filters.Add(
                new Filter(
                    ElasticSearchService <T> .GetFieldName(fieldSelector),
                    filterValues,
                    typeof(TType),
                    raw,
                    Operator.Or));

            return(this);
        }