internal static Tuple<Expression, ParameterExpression> Rebind(Type sourceType, IElasticMapping mapping, Expression selector)
 {
     var parameter = Expression.Parameter(typeof(Hit), "h");
     var visitor = new ElasticFieldsExpressionVisitor(sourceType, parameter, mapping);
     Argument.EnsureNotNull("selector", selector);
     return Tuple.Create(visitor.Visit(selector), parameter);
 }
 internal static new Projection Rebind(ParameterExpression parameter, string prefix, IElasticMapping mapping, Expression selector)
 {
     var visitor = new ProjectionExpressionVisitor(parameter, prefix, mapping);
     Argument.EnsureNotNull("selector", selector);
     var materialization = visitor.Visit(selector);
     return new Projection(visitor.fieldNames, materialization);
 }
        protected ElasticFieldsProjectionExpressionVisitor(ParameterExpression parameter, IElasticMapping mapping)
        {
            Argument.EnsureNotNull("parameter", parameter);
            Argument.EnsureNotNull("mapping", mapping);

            Parameter = parameter;
            Mapping = mapping;
        }
Example #4
0
        /// <summary>
        /// Create a new SearchRequestFormatter for the given connection, mapping and search request.
        /// </summary>
        /// <param name="connection">The ElasticConnection to prepare the SearchRequest for.</param>
        /// <param name="mapping">The IElasticMapping used to format the SearchRequest.</param>
        /// <param name="searchRequest">The SearchRequest to be formatted.</param>
        public SearchRequestFormatter(IElasticConnection connection, IElasticMapping mapping, SearchRequest searchRequest)
        {
            this.connection    = connection;
            this.mapping       = mapping;
            this.searchRequest = searchRequest;

            body = new Lazy <string>(() => CreateBody().ToString(connection.Options.Pretty ? Formatting.Indented : Formatting.None));
        }
        /// <summary>
        /// Create a new SearchRequestFormatter for the given connection, mapping and search request.
        /// </summary>
        /// <param name="connection">The ElasticConnection to prepare the SearchRequest for.</param>
        /// <param name="mapping">The IElasticMapping used to format the SearchRequest.</param>
        /// <param name="searchRequest">The SearchRequest to be formatted.</param>
        public SearchRequestFormatter(IElasticConnection connection, IElasticMapping mapping, SearchRequest searchRequest)
        {
            this.connection = connection;
            this.mapping = mapping;
            this.searchRequest = searchRequest;

            body = new Lazy<string>(() => CreateBody().ToString(connection.Options.Pretty ? Formatting.Indented : Formatting.None));
        }
        protected ElasticFieldsProjectionExpressionVisitor(ParameterExpression parameter, IElasticMapping mapping)
        {
            Argument.EnsureNotNull("parameter", parameter);
            Argument.EnsureNotNull("mapping", mapping);

            Parameter = parameter;
            Mapping   = mapping;
        }
 internal static new RebindCollectionResult<string> Rebind(Type sourceType, IElasticMapping mapping, Expression selector)
 {
     var parameter = Expression.Parameter(typeof(Hit), "h");
     var visitor = new MemberProjectionExpressionVisitor(sourceType, parameter, mapping);
     Argument.EnsureNotNull("selector", selector);
     var materializer = visitor.Visit(selector);
     return new RebindCollectionResult<string>(materializer, visitor.fieldNames, parameter);
 }
        public ElasticFieldsExpressionVisitor(string prefix, ParameterExpression bindingParameter, IElasticMapping mapping)
        {
            Argument.EnsureNotNull("bindingParameter", bindingParameter);
            Argument.EnsureNotNull("mapping", mapping);

            Prefix           = prefix;
            BindingParameter = bindingParameter;
            Mapping          = mapping;
        }
        public ElasticFieldsExpressionVisitor(Type sourcetype, ParameterExpression bindingParameter, IElasticMapping mapping)
        {
            Argument.EnsureNotNull("bindingParameter", bindingParameter);
            Argument.EnsureNotNull("mapping", mapping);

            SourceType = sourcetype;
            BindingParameter = bindingParameter;
            Mapping = mapping;
        }
Example #10
0
        /// <summary>
        /// Initializes a new instance of the <see cref="ElasticContext"/> class.
        /// </summary>
        /// <param name="connection">The information on how to connect to the Elasticsearch server.</param>
        /// <param name="mapping">The object that helps map queries (optional, defaults to <see cref="TrivialElasticMapping"/>).</param>
        /// <param name="log">The object which logs information (optional, defaults to <see cref="NullLog"/>).</param>
        /// <param name="retryPolicy">The object which controls retry policy for the search (optional, defaults to <see cref="RetryPolicy"/>).</param>
        public ElasticContext(IElasticConnection connection, IElasticMapping mapping = null, ILog log = null, IRetryPolicy retryPolicy = null)
        {
            Argument.EnsureNotNull(nameof(connection), connection);

            Connection  = connection;
            Log         = log ?? NullLog.Instance;
            Mapping     = mapping ?? new TrivialElasticMapping(connection, Log);
            RetryPolicy = retryPolicy ?? new RetryPolicy(Log);
        }
        public ElasticFieldsExpressionVisitor(Type sourcetype, ParameterExpression bindingParameter, IElasticMapping mapping)
        {
            Argument.EnsureNotNull(nameof(bindingParameter), bindingParameter);
            Argument.EnsureNotNull(nameof(mapping), mapping);

            SourceType       = sourcetype;
            BindingParameter = bindingParameter;
            Mapping          = mapping;
        }
Example #12
0
        public ElasticFieldsExpressionVisitor(Type sourcetype, ParameterExpression bindingParameter, IElasticMapping mapping)
        {
            Argument.CheckNotNull("bindingParameter", bindingParameter);
            Argument.CheckNotNull("mapping", mapping);

            SourceType       = sourcetype;
            BindingParameter = bindingParameter;
            Mapping          = mapping;
        }
        internal static new RebindCollectionResult <string> Rebind(string prefix, IElasticMapping mapping, Expression selector)
        {
            var parameter = Expression.Parameter(typeof(Hit), "h");
            var visitor   = new MemberProjectionExpressionVisitor(prefix, parameter, mapping);

            Argument.EnsureNotNull("selector", selector);
            var materializer = visitor.Visit(selector);

            return(new RebindCollectionResult <string>(materializer, visitor.fieldNames, parameter));
        }
        public ElasticRequestProcessor(IElasticConnection connection, IElasticMapping mapping, IRetryPolicy retryPolicy)
        {
            Argument.CheckNotNull("connection", connection);
            Argument.CheckNotNull("mapping", mapping);
            Argument.CheckNotNull("retryPolicy", retryPolicy);

            this.connection  = connection;
            this.mapping     = mapping;
            this.retryPolicy = retryPolicy;
        }
        public ElasticRequestProcessor(IElasticConnection connection, IElasticMapping mapping, ILog log, IRetryPolicy retryPolicy)
        {
            Argument.EnsureNotNull("connection", connection);
            Argument.EnsureNotNull("mapping", mapping);
            Argument.EnsureNotNull("log", log);
            Argument.EnsureNotNull("retryPolicy", retryPolicy);

            this.connection = connection;
            this.mapping = mapping;
            this.log = log;
            this.retryPolicy = retryPolicy;
        }
Example #16
0
        public ElasticRequestProcessor(ElasticConnection connection, IElasticMapping mapping, ILog log, IRetryPolicy retryPolicy)
        {
            Argument.EnsureNotNull("connection", connection);
            Argument.EnsureNotNull("mapping", mapping);
            Argument.EnsureNotNull("log", log);
            Argument.EnsureNotNull("retryPolicy", retryPolicy);

            this.connection  = connection;
            this.mapping     = mapping;
            this.log         = log;
            this.retryPolicy = retryPolicy;
        }
        public ElasticRequestProcessor(IElasticConnection connection, IElasticMapping mapping, ILog log, IRetryPolicy retryPolicy)
        {
            Argument.EnsureNotNull(nameof(connection), connection);
            Argument.EnsureNotNull(nameof(mapping), mapping);
            Argument.EnsureNotNull(nameof(log), log);
            Argument.EnsureNotNull(nameof(retryPolicy), retryPolicy);

            this.connection  = connection;
            this.mapping     = mapping;
            this.log         = log;
            this.retryPolicy = retryPolicy;
        }
        public VeryElasticQueryProvider(IElasticConnection connection, IElasticMapping mapping, IRetryPolicy retryPolicy)
        {
            Argument.CheckNotNull("connection", connection);
            Argument.CheckNotNull("mapping", mapping);
            Argument.CheckNotNull("retryPolicy", retryPolicy);

            this.Connection  = connection;
            this.Mapping     = mapping;
            this.RetryPolicy = retryPolicy;

            this.requestProcessor = new ElasticRequestProcessor(connection, mapping, retryPolicy);
        }
Example #19
0
        internal static FacetRebindCollectionResult Rebind(IElasticMapping mapping, Type sourceType, Expression expression)
        {
            Argument.EnsureNotNull(nameof(mapping), mapping);
            Argument.EnsureNotNull(nameof(expression), expression);

            var visitor           = new FacetExpressionVisitor(mapping, sourceType);
            var visitedExpression = visitor.Visit(expression);
            var facets            = new HashSet <IFacet>(visitor.GetFacets());
            var materializer      = GetFacetMaterializer(visitor.selectProjection, visitor.groupBy);

            return(new FacetRebindCollectionResult(visitedExpression, facets, visitor.bindingParameter, materializer));
        }
Example #20
0
 /// <summary>
 /// Initializes a new instance of the <see cref="TestableElasticContext"/> class.
 /// </summary>
 /// <param name="mapping">The <see cref="IElasticMapping"/> used to define mapping between the document and object.</param>
 /// <param name="log">The  <see cref="ILog"/> instance to receive logging information.</param>
 /// <param name="maxAttempts">Maximum number of attempts to try before failing.</param>
 /// <param name="timeout">How long to wait before failing a request.</param>
 public TestableElasticContext(IElasticMapping mapping = null,
                               ILog log         = null,
                               int maxAttempts  = 1,
                               TimeSpan timeout = default(TimeSpan))
 {
     Connection  = new ElasticConnection(new Uri("http://localhost/"), timeout: timeout);
     Mapping     = mapping ?? new ElasticMapping(true, true, true);
     Provider    = new TestableElasticQueryProvider(this);
     Requests    = new List <QueryInfo>();
     Log         = log ?? NullLog.Instance;
     RetryPolicy = new RetryPolicy(Log, 0, maxAttempts, NullDelay.Instance);
 }
        public ElasticQueryProvider(ElasticConnection connection, IElasticMapping mapping, ILog log, IRetryPolicy retryPolicy, string prefix)
        {
            Argument.EnsureNotNull("connection", connection);
            Argument.EnsureNotNull("mapping", mapping);
            Argument.EnsureNotNull("log", log);
            Argument.EnsureNotNull("retryPolicy", retryPolicy);

            Connection  = connection;
            Mapping     = mapping;
            Log         = log;
            RetryPolicy = retryPolicy;
            Prefix      = prefix;
        }
Example #22
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ElasticSession"/> class.
 /// </summary>
 /// <param name="connection">The information on how to connect to the Elasticsearch server.</param>
 /// <param name="mapping">The object that helps map queries (optional, defaults to <see cref="VeryElasticMapping"/>).</param>
 /// <param name="retryPolicy">The object which controls retry policy for the search (optional, defaults to <see cref="RetryPolicy"/>).</param>
 public ElasticSession(IElasticConnection connection, IElasticMapping mapping = null, IRetryPolicy retryPolicy = null)
 {
     this.Connection = connection;
     this.Mapping    = mapping ?? new VeryElasticMapping(
         new JsonSerializerSettings
     {
         DefaultValueHandling = DefaultValueHandling.Ignore,
         NullValueHandling    = NullValueHandling.Ignore,
         ConstructorHandling  = ConstructorHandling.AllowNonPublicDefaultConstructor
     }
         );
     this.RetryPolicy = retryPolicy ?? new RetryPolicy();
 }
        /// <summary>
        /// Create a new ElasticQueryProvider for a given connection, mapping, log, retry policy and field prefix.
        /// </summary>
        /// <param name="connection">Connection to use to connect to Elasticsearch.</param>
        /// <param name="mapping">A mapping to specify how queries and results are translated.</param>
        /// <param name="log">A log to receive any information or debugging messages.</param>
        /// <param name="retryPolicy">A policy to describe how to handle network issues.</param>
        public ElasticQueryProvider(IElasticConnection connection, IElasticMapping mapping, ILog log, IRetryPolicy retryPolicy)
        {
            Argument.EnsureNotNull("connection", connection);
            Argument.EnsureNotNull("mapping", mapping);
            Argument.EnsureNotNull("log", log);
            Argument.EnsureNotNull("retryPolicy", retryPolicy);

            Connection  = connection;
            Mapping     = mapping;
            Log         = log;
            RetryPolicy = retryPolicy;

            requestProcessor = new ElasticRequestProcessor(connection, mapping, log, retryPolicy);
        }
 private ElasticQueryTranslator(IElasticMapping mapping, string prefix)
 {
     this.mapping = new ElasticFieldsMappingWrapper(mapping);
     this.prefix  = prefix;
 }
Example #25
0
 ElasticQueryTranslator(IElasticMapping mapping, Type sourceType)
     : base(mapping, sourceType)
 {
 }
Example #26
0
 internal static ElasticTranslateResult Translate(IElasticMapping mapping, Expression e)
 {
     return(new ElasticQueryTranslator(mapping, FindSourceType(e)).Translate(e));
 }
 private ElasticQueryTranslator(IElasticMapping mapping, string prefix)
     : base(mapping, prefix)
 {
 }
 /// <inheritdoc/>
 public ElasticFieldsMappingWrapper(IElasticMapping wrapped)
 {
     this.wrapped = wrapped;
 }
 ElasticQueryTranslator(IElasticMapping mapping, Type sourceType)
     : base(mapping, sourceType)
 {
 }
 internal static ElasticTranslateResult Translate(IElasticMapping mapping, string prefix, Expression e)
 {
     return new ElasticQueryTranslator(mapping, prefix).Translate(e);
 }
 /// <summary>
 /// Creates a new CriteriaExpressionVisitor with a given mapping and prefix.
 /// </summary>
 /// <param name="mapping">The IElasticMapping used to translate properties to fields.</param>
 /// <param name="prefix">The string prefix used to prepend fields</param>
 protected CriteriaExpressionVisitor(IElasticMapping mapping, string prefix)
 {
     Mapping = new ElasticFieldsMappingWrapper(mapping);
     Prefix  = prefix;
 }
 private ProjectionExpressionVisitor(ParameterExpression parameter, string prefix, IElasticMapping mapping)
     : base(parameter, mapping)
 {
     this.prefix = prefix;
 }
 private MemberProjectionExpressionVisitor(string prefix, ParameterExpression bindingParameter, IElasticMapping mapping)
     : base(prefix, bindingParameter, mapping)
 {
 }
 public SimpleCriteriaExpressionVisitor(IElasticMapping mapping, string prefix)
     : base(mapping, prefix)
 {
 }
 internal static ElasticTranslateResult Translate(IElasticMapping mapping, Expression e)
 {
     return new ElasticQueryTranslator(mapping, FindSourceType(e)).Translate(e);
 }
 /// <inheritdoc/>
 public ElasticFieldsMappingWrapper(IElasticMapping wrapped)
 {
     this.wrapped = wrapped;
 }
 public SimpleCriteriaExpressionVisitor(IElasticMapping mapping, string prefix)
     : base(mapping, prefix)
 {
 }
Example #38
0
 FacetExpressionVisitor(IElasticMapping mapping, Type sourceType)
     : base(mapping, sourceType)
 {
 }
        internal static Tuple <Expression, ParameterExpression> Rebind(Type sourceType, IElasticMapping mapping, Expression selector)
        {
            var parameter = Expression.Parameter(typeof(Hit), "h");
            var visitor   = new ElasticFieldsExpressionVisitor(sourceType, parameter, mapping);

            Argument.EnsureNotNull(nameof(selector), selector);
            return(Tuple.Create(visitor.Visit(selector), parameter));
        }
 MemberProjectionExpressionVisitor(Type sourceType, ParameterExpression bindingParameter, IElasticMapping mapping)
     : base(sourceType, bindingParameter, mapping)
 {
 }
Example #41
0
 public SimpleCriteriaExpressionVisitor(IElasticMapping mapping, Type sourceType)
     : base(mapping, sourceType)
 {
 }
 private MemberProjectionExpressionVisitor(string prefix, ParameterExpression bindingParameter, IElasticMapping mapping)
     : base(prefix, bindingParameter, mapping)
 {
 }
Example #43
0
 public PostBodyRequestFormatter(ElasticConnection connection, IElasticMapping mapping, ElasticSearchRequest searchRequest)
     : base(connection, searchRequest)
 {
     this.mapping = mapping;
     body         = new Lazy <string>(() => CreateJsonPayload().ToString(Formatting.None));
 }
 internal static Expression Rebind(ParameterExpression parameter, string prefix, IElasticMapping mapping, Expression selector)
 {
     var visitor = new ElasticFieldsProjectionExpressionVisitor(parameter, mapping);
     Argument.EnsureNotNull("selector", selector);
     return visitor.Visit(selector);
 }
 internal static ElasticTranslateResult TranslateIndex <T, TAggregate>(IElasticMapping mapping, Expression <Func <T, TAggregate> > fieldExpression)
 {
     return(new ElasticQueryTranslator(mapping, null).TranslateIndex(fieldExpression));
 }
 internal static ElasticTranslateResult Translate(IElasticMapping mapping, string prefix, Expression e)
 {
     return(new ElasticQueryTranslator(mapping, prefix).Translate(e));
 }
Example #47
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CriteriaExpressionVisitor"/> class.
 /// Creates a new CriteriaExpressionVisitor with a given mapping and prefix.
 /// </summary>
 /// <param name="mapping">
 /// The IElasticMapping used to translate properties to fields.
 /// </param>
 /// <param name="sourceType">
 /// The string prefix used to prepend fields
 /// </param>
 protected CriteriaExpressionVisitor(IElasticMapping mapping, Type sourceType)
 {
     this.Mapping    = new ElasticFieldsMappingWrapper(mapping);
     this.SourceType = sourceType;
 }
 public PostBodyRequestFormatter(ElasticConnection connection, IElasticMapping mapping, ElasticSearchRequest searchRequest)
     : base(connection, searchRequest)
 {
     this.mapping = mapping;
     body = new Lazy<string>(() => CreateJsonPayload().ToString(Formatting.None));
 }
 public SimpleCriteriaExpressionVisitor(IElasticMapping mapping, Type sourceType)
     : base(mapping, sourceType)
 {
 }