@@ -171,24 +171,45 @@ func main() {
171171 // ES client instantiation
172172 // ES v7 and v6 clients
173173 util .NewClient ()
174-
174+ // map of specific plugins in a sequence
175+ sequencedPlugins := map [string ]string {
176+ "rules.so" : "" , // path
177+ "function.so" : "" , // path
178+ "querytranslate.so" : "" , // path
179+ "analytics.so" : "" , // path
180+ }
175181 var elasticSearchPath string
176182 elasticSearchMiddleware := make ([]middleware.Middleware , 0 )
177183 err := filepath .Walk (pluginDir , func (path string , info os.FileInfo , err error ) error {
178184 if err != nil {
179185 return err
180186 }
181187 if ! info .IsDir () && filepath .Ext (info .Name ()) == ".so" && info .Name () != "elasticsearch.so" {
182- mw , err1 := LoadPluginFromFile (router , path )
183- if err1 != nil {
184- return err1
188+ _ , isExist := sequencedPlugins [info .Name ()]
189+ if isExist {
190+ sequencedPlugins [info .Name ()] = path
191+ } else {
192+ mw , err1 := LoadPluginFromFile (router , path )
193+ if err1 != nil {
194+ return err1
195+ }
196+ elasticSearchMiddleware = append (elasticSearchMiddleware , mw ... )
185197 }
186- elasticSearchMiddleware = append (elasticSearchMiddleware , mw ... )
187198 } else if info .Name () == "elasticsearch.so" {
188199 elasticSearchPath = path
189200 }
190201 return nil
191202 })
203+ // load plugins in a sequence
204+ for _ , path := range sequencedPlugins {
205+ if path != "" {
206+ mw , err := LoadPluginFromFile (router , path )
207+ if err != nil {
208+ log .Fatal ("error loading plugins: " , err )
209+ }
210+ elasticSearchMiddleware = append (elasticSearchMiddleware , mw ... )
211+ }
212+ }
192213 LoadESPluginFromFile (router , elasticSearchPath , elasticSearchMiddleware )
193214 if err != nil {
194215 log .Fatal ("error loading plugins: " , err )
0 commit comments