Skip to content

Commit bd56a78

Browse files
authored
feat: add template for searchable fields (#86)
* feat: add template for searchable fields * fix: add lang + synonyms mapping * feat: add template for v6 + synonyms analyzer
1 parent 4f210fb commit bd56a78

1 file changed

Lines changed: 140 additions & 7 deletions

File tree

util/es_template.go

Lines changed: 140 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,20 +2,153 @@ package util
22

33
import (
44
"context"
5+
"fmt"
6+
7+
log "github.com/sirupsen/logrus"
58
)
69

710
// SetDefaultIndexTemplate to set default template for indexes
811
func SetDefaultIndexTemplate() error {
12+
13+
analyzers := `{
14+
"analyzer": {
15+
"universal": {
16+
"tokenizer": "standard",
17+
"filter": [
18+
"universal_stop"
19+
]
20+
},
21+
"autosuggest_analyzer": {
22+
"filter": [
23+
"lowercase",
24+
"asciifolding",
25+
"autosuggest_filter"
26+
],
27+
"tokenizer": "standard",
28+
"type": "custom"
29+
},
30+
"ngram_analyzer": {
31+
"filter": [
32+
"lowercase",
33+
"asciifolding",
34+
"ngram_filter"
35+
],
36+
"tokenizer": "standard",
37+
"type": "custom"
38+
},
39+
"synonyms": {
40+
"tokenizer": "standard",
41+
"filter": [
42+
"synonym_graph",
43+
"lowercase"
44+
]
45+
}
46+
},
47+
"filter": {
48+
"synonym_graph": {
49+
"type": "synonym_graph",
50+
"synonyms": []
51+
},
52+
"universal_stop": {
53+
"type": "stop",
54+
"stopwords": "_english_"
55+
},
56+
"autosuggest_filter": {
57+
"max_gram": "20",
58+
"min_gram": "1",
59+
"token_chars": [
60+
"letter",
61+
"digit",
62+
"punctuation",
63+
"symbol"
64+
],
65+
"type": "edge_ngram"
66+
},
67+
"ngram_filter": {
68+
"max_gram": "9",
69+
"min_gram": "2",
70+
"token_chars": [
71+
"letter",
72+
"digit",
73+
"punctuation",
74+
"symbol"
75+
],
76+
"type": "ngram"
77+
}
78+
}
79+
}`
80+
81+
mappings := `{
82+
"dynamic_templates": [{
83+
"strings": {
84+
"match_mapping_type": "string",
85+
"mapping": {
86+
"type": "text",
87+
"analyzer": "standard",
88+
"fields": {
89+
"autosuggest": {
90+
"type": "text",
91+
"analyzer": "autosuggest_analyzer",
92+
"search_analyzer": "simple"
93+
},
94+
"keyword": {
95+
"type": "keyword",
96+
"ignore_above": 256
97+
},
98+
"search": {
99+
"type": "text",
100+
"analyzer": "ngram_analyzer",
101+
"search_analyzer": "simple"
102+
},
103+
"synonyms": {
104+
"type": "text",
105+
"analyzer": "synonym"
106+
},
107+
"lang": {
108+
"type": "text",
109+
"analyzer": "universal"
110+
}
111+
}
112+
}
113+
}
114+
}],
115+
"dynamic": true
116+
}`
117+
9118
version := GetVersion()
10119
if version == 7 {
11-
response, err := GetClient7().IndexTemplateExists("default_temp").
12-
Do(context.Background())
13-
if err != nil || !response {
14-
defaultSetting := `{"template" : "*", "settings" : {"number_of_shards" : 1, "max_ngram_diff" : 8, "max_shingle_diff" : 8}}`
15-
_, err := GetClient7().IndexPutTemplate("default_temp").BodyString(defaultSetting).Do(context.Background())
16-
if err != nil {
17-
return err
120+
defaultSetting := fmt.Sprintf(`{
121+
"template": "*",
122+
"settings": {
123+
"number_of_shards": 1,
124+
"max_ngram_diff": 8,
125+
"max_shingle_diff": 8,
126+
"analysis": %s
127+
},
128+
"mappings": %s
129+
}`, analyzers, mappings)
130+
_, err := GetClient7().IndexPutTemplate("default_temp").BodyString(defaultSetting).Do(context.Background())
131+
if err != nil {
132+
log.Errorln("[SET TEMPLATE ERROR V7]", ": ", err)
133+
return err
134+
}
135+
}
136+
137+
if version == 6 {
138+
defaultSetting := fmt.Sprintf(`{
139+
"template": "*",
140+
"settings": {
141+
"number_of_shards": 1,
142+
"analysis": %s
143+
},
144+
"mappings": {
145+
"_doc": %s
18146
}
147+
}`, analyzers, mappings)
148+
_, err := GetClient6().IndexPutTemplate("default_temp").BodyString(defaultSetting).Do(context.Background())
149+
if err != nil {
150+
log.Errorln("[SET TEMPLATE ERROR V6]", ": ", err)
151+
return err
19152
}
20153
}
21154
return nil

0 commit comments

Comments
 (0)