/** * [[default-type-name]] * ==== Default type name * With Elasticsearch 6.x, you can only have a single type per index and in the long run types will be * phased out entirely. * The need to tag types is no longer necessary, so in many cases it makes sense to use a single fixed type, * like `doc` */ [U] public void DefaultTypeName() { var settings = new ConnectionSettings().DefaultTypeName("doc"); var resolver = new TypeNameResolver(settings); var type = resolver.Resolve <Project>(); type.Should().Be("doc"); }
[U] public void TypeNameFromDataContractAttribute() { var settings = new ConnectionSettings(); var resolver = new TypeNameResolver(settings); var type = resolver.Resolve <DataContractProject>(); type.Should().Be("data_contract_project"); }
[U] public void TypeNameFromElasticsearchTypeAttribute() { var settings = new ConnectionSettings(); var resolver = new TypeNameResolver(settings); var type = resolver.Resolve <AttributedProject>(); type.Should().Be("attributed_project"); }
/** * ==== TypeName default * Type names are resolved by lowercasing the type name */ [U] public void DefaultTypeNameIsLowercase() { var settings = new ConnectionSettings(); var resolver = new TypeNameResolver(settings); var index = resolver.Resolve <Project>(); index.Should().Be("project"); }
/** * With such a setting in place, all CLR types will resolve to `doc` as the type name to use in Elasticsearch. */ /** * [[type-name-inferrer]] * ==== Override type name inferrer * You can provide a delegate to override the default type name inferrer for types */ [U] public void OverridingDefaultTypeNameInferrer() { var settings = new ConnectionSettings() .DefaultTypeNameInferrer(t => t.Name.ToLower() + "-suffix"); var resolver = new TypeNameResolver(settings); var type = resolver.Resolve <Project>(); type.Should().Be("project-suffix"); }
/** * [[pluralize-type-names]] * ==== Pluralize type names * The default behaviour in older versions of NEST was to pluralize typenames * * You can still opt in to this old behaviour as followed: */ [U] public void PluralizeTypeNames() { var settings = new ConnectionSettings() .PluralizeTypeNames(); var resolver = new TypeNameResolver(settings); var index = resolver.Resolve <Project>(); index.Should().Be("projects"); }
public static DocumentInfo <TEntity> Mapping <TEntity>(this IElasticClient client, Func <DocumentInfo <TEntity>, DocumentInfo <TEntity> > documentInfo) where TEntity : class { var doc = documentInfo(new DocumentInfo <TEntity>()); if (string.IsNullOrEmpty(doc.Index)) { doc.SetIndex(client.ConnectionSettings.DefaultIndex); } if (string.IsNullOrEmpty(doc.Type)) { var resolver = new TypeNameResolver(client.ConnectionSettings); doc.SetType(resolver.Resolve <TEntity>()); } MapTypeSearch.AddMap <TEntity>(doc); return(doc); }