@@ -6,7 +6,7 @@ package mappings
66import (
77 "bytes"
88 "embed"
9- "strings "
9+ "fmt "
1010
1111 "github.com/jaegertracing/jaeger/pkg/es"
1212 "github.com/jaegertracing/jaeger/pkg/es/config"
@@ -17,6 +17,16 @@ import (
1717//go:embed *.json
1818var MAPPINGS embed.FS
1919
20+ // MappingType represents the type of Elasticsearch mapping
21+ type MappingType int
22+
23+ const (
24+ SpanMapping MappingType = iota
25+ ServiceMapping
26+ DependenciesMapping
27+ SamplingMapping
28+ )
29+
2030// MappingBuilder holds common parameters required to render an elasticsearch index template
2131type MappingBuilder struct {
2232 TemplateBuilder es.TemplateBuilder
@@ -36,25 +46,25 @@ type templateParams struct {
3646 Priority int64
3747}
3848
39- func (mb MappingBuilder ) getMappingTemplateOptions (mapping string ) templateParams {
49+ func (mb MappingBuilder ) getMappingTemplateOptions (mappingType MappingType ) templateParams {
4050 mappingOpts := templateParams {}
4151 mappingOpts .UseILM = mb .UseILM
4252 mappingOpts .ILMPolicyName = mb .ILMPolicyName
4353
44- switch {
45- case strings . Contains ( mapping , "span" ) :
54+ switch mappingType {
55+ case SpanMapping :
4656 mappingOpts .Shards = mb .Indices .Spans .Shards
4757 mappingOpts .Replicas = mb .Indices .Spans .Replicas
4858 mappingOpts .Priority = mb .Indices .Spans .Priority
49- case strings . Contains ( mapping , "service" ) :
59+ case ServiceMapping :
5060 mappingOpts .Shards = mb .Indices .Services .Shards
5161 mappingOpts .Replicas = mb .Indices .Services .Replicas
5262 mappingOpts .Priority = mb .Indices .Services .Priority
53- case strings . Contains ( mapping , "dependencies" ) :
63+ case DependenciesMapping :
5464 mappingOpts .Shards = mb .Indices .Dependencies .Shards
5565 mappingOpts .Replicas = mb .Indices .Dependencies .Replicas
5666 mappingOpts .Priority = mb .Indices .Dependencies .Priority
57- case strings . Contains ( mapping , "sampling" ) :
67+ case SamplingMapping :
5868 mappingOpts .Shards = mb .Indices .Sampling .Shards
5969 mappingOpts .Replicas = mb .Indices .Sampling .Replicas
6070 mappingOpts .Priority = mb .Indices .Sampling .Priority
@@ -63,24 +73,50 @@ func (mb MappingBuilder) getMappingTemplateOptions(mapping string) templateParam
6373 return mappingOpts
6474}
6575
66- // GetMapping returns the rendered mapping based on elasticsearch version
67- func (mb * MappingBuilder ) GetMapping (mapping string ) (string , error ) {
68- templateOpts := mb .getMappingTemplateOptions (mapping )
69- if mb .EsVersion == 8 {
70- return mb .renderMapping (mapping + "-8.json" , templateOpts )
71- } else if mb .EsVersion == 7 {
72- return mb .renderMapping (mapping + "-7.json" , templateOpts )
76+ func (mt MappingType ) String () string {
77+ switch mt {
78+ case SpanMapping :
79+ return "jaeger-span"
80+ case ServiceMapping :
81+ return "jaeger-service"
82+ case DependenciesMapping :
83+ return "jaeger-dependencies"
84+ case SamplingMapping :
85+ return "jaeger-sampling"
86+ default :
87+ return "unknown"
88+ }
89+ }
90+
91+ // MappingTypeFromString converts a string to a MappingType
92+ func MappingTypeFromString (val string ) (MappingType , error ) {
93+ switch val {
94+ case "jaeger-span" :
95+ return SpanMapping , nil
96+ case "jaeger-service" :
97+ return ServiceMapping , nil
98+ case "jaeger-dependencies" :
99+ return DependenciesMapping , nil
100+ case "jaeger-sampling" :
101+ return SamplingMapping , nil
102+ default :
103+ return - 1 , fmt .Errorf ("invalid mapping type: %s" , val )
73104 }
74- return mb .renderMapping (mapping + "-6.json" , templateOpts )
105+ }
106+
107+ // GetMapping returns the rendered mapping based on elasticsearch version
108+ func (mb * MappingBuilder ) GetMapping (mappingType MappingType ) (string , error ) {
109+ templateOpts := mb .getMappingTemplateOptions (mappingType )
110+ return mb .renderMapping (fmt .Sprintf ("%s-%d.json" , mappingType .String (), mb .EsVersion ), templateOpts )
75111}
76112
77113// GetSpanServiceMappings returns span and service mappings
78114func (mb * MappingBuilder ) GetSpanServiceMappings () (spanMapping string , serviceMapping string , err error ) {
79- spanMapping , err = mb .GetMapping ("jaeger-span" )
115+ spanMapping , err = mb .GetMapping (SpanMapping )
80116 if err != nil {
81117 return "" , "" , err
82118 }
83- serviceMapping , err = mb .GetMapping ("jaeger-service" )
119+ serviceMapping , err = mb .GetMapping (ServiceMapping )
84120 if err != nil {
85121 return "" , "" , err
86122 }
@@ -89,12 +125,12 @@ func (mb *MappingBuilder) GetSpanServiceMappings() (spanMapping string, serviceM
89125
90126// GetDependenciesMappings returns dependencies mappings
91127func (mb * MappingBuilder ) GetDependenciesMappings () (string , error ) {
92- return mb .GetMapping ("jaeger-dependencies" )
128+ return mb .GetMapping (DependenciesMapping )
93129}
94130
95131// GetSamplingMappings returns sampling mappings
96132func (mb * MappingBuilder ) GetSamplingMappings () (string , error ) {
97- return mb .GetMapping ("jaeger-sampling" )
133+ return mb .GetMapping (SamplingMapping )
98134}
99135
100136func loadMapping (name string ) string {
0 commit comments