public static ICollection <IFieldSort> GetResolvedFields(this ElasticMappingResolver resolver, ICollection <IFieldSort> sorts)
        {
            if (sorts.Count == 0)
            {
                return(sorts);
            }

            return(sorts.Select(sort => ResolveFieldSort(resolver, sort)).ToList());
        }
        public static ICollection <Field> GetResolvedFields(this ElasticMappingResolver resolver, ICollection <Field> fields)
        {
            if (fields.Count == 0)
            {
                return(fields);
            }

            return(fields.Select(field => ResolveFieldName(resolver, field)).ToList());
        }
        public static Field ResolveFieldName(this ElasticMappingResolver resolver, Field field)
        {
            if (field.Name == null)
            {
                return(field);
            }

            return(new Field(resolver.GetResolvedField(field.Name), field.Boost, field.Format));
        }
Beispiel #4
0
        public static T SetMappingResolver <T>(this T context, ElasticMappingResolver mappingResolver) where T : IQueryVisitorContext
        {
            if (!(context is IElasticQueryVisitorContext elasticContext))
            {
                throw new ArgumentException("Context must be of type IElasticQueryVisitorContext", nameof(context));
            }

            elasticContext.MappingResolver = mappingResolver ?? ElasticMappingResolver.NullInstance;

            return(context);
        }
 public static IFieldSort ResolveFieldSort(this ElasticMappingResolver resolver, IFieldSort sort)
 {
     return(new FieldSort {
         Field = resolver.GetSortFieldName(sort.SortKey),
         IgnoreUnmappedFields = sort.IgnoreUnmappedFields,
         Missing = sort.Missing,
         Mode = sort.Mode,
         Nested = sort.Nested,
         NumericType = sort.NumericType,
         Order = sort.Order,
         UnmappedType = sort.UnmappedType
     });
 }
        public void CanResolveProperties()
        {
            var client = GetClient();
            var index  = CreateRandomIndex <MyNestedType>(client, MapMyNestedType);

            client.IndexMany(new[] {
                new MyNestedType {
                    Field1 = "value1", Field2 = "value2", Nested = new MyType[] {
                        new MyType {
                            Field1 = "banana", Data =
                            {
                                { "number-0001",    23 },
                                { "text-0001",   "Hey" }
                            }
                        }
                    }
                },
                new MyNestedType {
                    Field1 = "value2", Field2 = "value2"
                },
                new MyNestedType {
                    Field1 = "value1", Field2 = "value4"
                }
            }, index);
            client.Indices.Refresh(index);

            var resolver = ElasticMappingResolver.Create <MyNestedType>(MapMyNestedType, client, _logger);

            var dynamicTextAggregation = resolver.GetAggregationsFieldName("nested.data.text-0001");

            Assert.Equal("nested.data.text-0001.keyword", dynamicTextAggregation);

            var field1Property = resolver.GetMappingProperty("Field1");

            Assert.IsType <TextProperty>(field1Property);

            var field1 = resolver.GetResolvedField("FielD1");

            Assert.Equal("field1", field1);

            var field4Property = resolver.GetMappingProperty("Field4");

            Assert.IsType <TextProperty>(field4Property);

            var field4ReflectionProperty = resolver.GetMappingProperty(new Field(typeof(MyNestedType).GetProperty("Field4")));

            Assert.IsType <TextProperty>(field4ReflectionProperty);

            var field4ExpressionProperty = resolver.GetMappingProperty(new Field(GetObjectPath(p => p.Field4)));

            Assert.IsType <TextProperty>(field4ExpressionProperty);

            var field4AliasMapping = resolver.GetMapping("Field4Alias", true);

            Assert.IsType <TextProperty>(field4AliasMapping.Property);
            Assert.Same(field4Property, field4AliasMapping.Property);

            var field4sort = resolver.GetSortFieldName("Field4Alias");

            Assert.Equal("field4.sort", field4sort);

            var field4aggs = resolver.GetAggregationsFieldName("Field4Alias");

            Assert.Equal("field4.keyword", field4aggs);

            var nestedIdProperty = resolver.GetMappingProperty("Nested.Id");

            Assert.IsType <TextProperty>(nestedIdProperty);

            var nestedId = resolver.GetResolvedField("Nested.Id");

            Assert.Equal("nested.id", nestedId);

            nestedIdProperty = resolver.GetMappingProperty("nested.id");
            Assert.IsType <TextProperty>(nestedIdProperty);

            var nestedField1Property = resolver.GetMappingProperty("Nested.Field1");

            Assert.IsType <TextProperty>(nestedField1Property);

            nestedField1Property = resolver.GetMappingProperty("nEsted.fieLD1");
            Assert.IsType <TextProperty>(nestedField1Property);

            var nestedField2Property = resolver.GetMappingProperty("Nested.Field4");

            Assert.IsType <NumberProperty>(nestedField2Property);

            var nestedField5Property = resolver.GetMappingProperty("Nested.Field5");

            Assert.IsType <DateProperty>(nestedField5Property);

            var nestedDataProperty = resolver.GetMappingProperty("Nested.Data");

            Assert.IsType <ObjectProperty>(nestedDataProperty);
        }
Beispiel #7
0
 protected override ElasticMappingResolver CreateMappingResolver()
 {
     return(ElasticMappingResolver.Create(Configuration.Client, VersionedName, _logger));
 }
Beispiel #8
0
 protected override ElasticMappingResolver CreateMappingResolver()
 {
     return(ElasticMappingResolver.Create <T>(ConfigureIndexMapping, Configuration.Client, Name, _logger));
 }
 protected virtual ElasticMappingResolver CreateMappingResolver()
 {
     return(ElasticMappingResolver.Create(Configuration.Client, Name, _logger));
 }