func BlevePIndexImplInitRouter(r *mux.Router, phase string, mgr *cbgt.Manager) { prefix := "" if mgr != nil { prefix = mgr.Options()["urlPrefix"] } if phase == "static.before" { staticBleveMapping := http.FileServer(bleveMappingUI.AssetFS()) r.PathPrefix(prefix + "/static-bleve-mapping/").Handler( http.StripPrefix(prefix+"/static-bleve-mapping/", staticBleveMapping)) bleveMappingUI.RegisterHandlers(r, prefix+"/api") } if phase == "manager.after" { // Using standard bleveHttp handlers for /api/pindex-bleve endpoints. // listIndexesHandler := bleveHttp.NewListIndexesHandler() r.Handle(prefix+"/api/pindex-bleve", listIndexesHandler).Methods("GET") getIndexHandler := bleveHttp.NewGetIndexHandler() getIndexHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}", getIndexHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}/count", docCountHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}/query", searchHandler).Methods("POST") docGetHandler := bleveHttp.NewDocGetHandler("") docGetHandler.IndexNameLookup = rest.PIndexNameLookup docGetHandler.DocIDLookup = rest.DocIDLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}/doc/{docID}", docGetHandler).Methods("GET") debugDocHandler := bleveHttp.NewDebugDocumentHandler("") debugDocHandler.IndexNameLookup = rest.PIndexNameLookup debugDocHandler.DocIDLookup = rest.DocIDLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}/docDebug/{docID}", debugDocHandler).Methods("GET") listFieldsHandler := bleveHttp.NewListFieldsHandler("") listFieldsHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle(prefix+"/api/pindex-bleve/{pindexName}/fields", listFieldsHandler).Methods("GET") } }
func init() { bleve.Config.DefaultKVStore = gtreap.Name bleveHttp.SetLog(log.New(os.Stderr, "bleve.http ", log.LstdFlags)) router := mux.NewRouter() router.StrictSlash(true) listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_count", docCountHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_search", searchHandler).Methods("POST") http.Handle("/", &CORSWrapper{router}) log.Printf("opening indexes") // walk the data dir and register index names dirEntries, err := ioutil.ReadDir(indexDir) if err != nil { log.Printf("error reading data dir: %v", err) return } for _, dirInfo := range dirEntries { indexPath := indexDir + string(os.PathSeparator) + dirInfo.Name() if dirInfo.IsDir() { log.Printf("see directory %s, this is not supported in the appengine environment", dirInfo.Name()) } else { log.Printf("preloading index export %s", dirInfo.Name()) // assume file in this dir is actually a bleve export i, err := bleve.NewUsing( "", bleve.NewIndexMapping(), bleve.Config.DefaultIndexType, preload.Name, map[string]interface{}{ "kvStoreName_actual": gtreap.Name, "preloadpath": indexPath, }) if err != nil { log.Printf("error preloading index %s: %v", indexPath, err) } else { i.SetName(dirInfo.Name()) log.Printf("registered index: %s", dirInfo.Name()) bleveHttp.RegisterIndexName(dirInfo.Name(), i) } } } }
func BlevePIndexImplInitRouter(r *mux.Router, phase string) { if phase == "static.before" { // Handlers from bleve/http/mapping need earlier precedence. bleveHttpMappingStatic := http.FileServer(bleveHttpMapping.AssetFS()) r.PathPrefix("/static/partials/analysis").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) r.PathPrefix("/static/partials/mapping").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) r.PathPrefix("/static/js/mapping").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) bleveHttpMapping.RegisterHandlers(r, "/api") } if phase == "manager.after" { // Using standard bleveHttp handlers for /api/pindex-bleve endpoints. // listIndexesHandler := bleveHttp.NewListIndexesHandler() r.Handle("/api/pindex-bleve", listIndexesHandler).Methods("GET") getIndexHandler := bleveHttp.NewGetIndexHandler() getIndexHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle("/api/pindex-bleve/{pindexName}", getIndexHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle("/api/pindex-bleve/{pindexName}/count", docCountHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle("/api/pindex-bleve/{pindexName}/query", searchHandler).Methods("POST") docGetHandler := bleveHttp.NewDocGetHandler("") docGetHandler.IndexNameLookup = rest.PIndexNameLookup docGetHandler.DocIDLookup = rest.DocIDLookup r.Handle("/api/pindex-bleve/{pindexName}/doc/{docID}", docGetHandler).Methods("GET") debugDocHandler := bleveHttp.NewDebugDocumentHandler("") debugDocHandler.IndexNameLookup = rest.PIndexNameLookup debugDocHandler.DocIDLookup = rest.DocIDLookup r.Handle("/api/pindex-bleve/{pindexName}/docDebug/{docID}", debugDocHandler).Methods("GET") listFieldsHandler := bleveHttp.NewListFieldsHandler("") listFieldsHandler.IndexNameLookup = rest.PIndexNameLookup r.Handle("/api/pindex-bleve/{pindexName}/fields", listFieldsHandler).Methods("GET") } }
func main() { flag.Parse() // open the index beerIndex, err := bleve.Open(*indexPath) if err == bleve.ErrorIndexPathDoesNotExist { log.Printf("Creating new index...") // create a mapping indexMapping, err := buildIndexMapping() if err != nil { log.Fatal(err) } beerIndex, err = bleve.New(*indexPath, indexMapping) if err != nil { log.Fatal(err) } // index data in the background go func() { err = indexBeer(beerIndex) if err != nil { log.Fatal(err) } }() } else if err != nil { log.Fatal(err) } else { log.Printf("Opening existing index...") } // create a router to serve static files router := staticFileRouter() // add the API bleveHttp.RegisterIndexName("beer", beerIndex) searchHandler := bleveHttp.NewSearchHandler("beer") router.Handle("/api/search", searchHandler).Methods("POST") listFieldsHandler := bleveHttp.NewListFieldsHandler("beer") router.Handle("/api/fields", listFieldsHandler).Methods("GET") debugHandler := bleveHttp.NewDebugDocumentHandler("beer") router.Handle("/api/debug/{docID}", debugHandler).Methods("GET") // start the HTTP server http.Handle("/", router) log.Printf("Listening on %v", *bindAddr) log.Fatal(http.ListenAndServe(*bindAddr, nil)) }
func init() { router := mux.NewRouter() router.StrictSlash(true) listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_count", docCountHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_search", searchHandler).Methods("POST") http.Handle("/", &CORSWrapper{router}) log.Printf("opening indexes") // walk the data dir and register index names dirEntries, err := ioutil.ReadDir(indexDir) if err != nil { log.Printf("error reading data dir: %v", err) return } for _, dirInfo := range dirEntries { indexPath := indexDir + string(os.PathSeparator) + dirInfo.Name() // skip single files in data dir since a valid index is a directory that // contains multiple files if !dirInfo.IsDir() { log.Printf("not registering %s, skipping", indexPath) continue } i, err := bleve.OpenUsing(indexPath, map[string]interface{}{ "read_only": true, }) if err != nil { log.Printf("error opening index %s: %v", indexPath, err) } else { log.Printf("registered index: %s", dirInfo.Name()) bleveHttp.RegisterIndexName(dirInfo.Name(), i) } } }
func init() { router := mux.NewRouter() router.StrictSlash(true) listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_count", docCountHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_search", searchHandler).Methods("POST") http.Handle("/", &CORSWrapper{router}) log.Printf("opening indexes") // walk the data dir and register index names dirEntries, err := ioutil.ReadDir(indexDir) if err != nil { log.Printf("error reading data dir: %v", err) return } for _, dirInfo := range dirEntries { indexPath := indexDir + string(os.PathSeparator) + dirInfo.Name() if !dirInfo.IsDir() { log.Printf("see file %s, this is not supported in the appengine environment", dirInfo.Name()) } else { i, err := bleve.OpenUsing(indexPath, map[string]interface{}{ "read_only": true, }) if err != nil { log.Printf("error opening index %s: %v", indexPath, err) } else { log.Printf("registered index: %s", dirInfo.Name()) bleveHttp.RegisterIndexName(dirInfo.Name(), i) } } } }
func main() { flag.Parse() // walk the data dir and register index names dirEntries, err := ioutil.ReadDir(*dataDir) if err != nil { log.Fatalf("error reading data dir: %v", err) } for _, dirInfo := range dirEntries { indexPath := *dataDir + string(os.PathSeparator) + dirInfo.Name() // skip single files in data dir since a valid index is a directory that // contains multiple files if !dirInfo.IsDir() { log.Printf("not registering %s, skipping", indexPath) continue } i, err := bleve.Open(indexPath) if err != nil { log.Printf("error opening index %s: %v", indexPath, err) } else { log.Printf("registered index: %s", dirInfo.Name()) bleveHttp.RegisterIndexName(dirInfo.Name(), i) // set correct name in stats i.SetName(dirInfo.Name()) } } router := mux.NewRouter() router.StrictSlash(true) createIndexHandler := bleveHttp.NewCreateIndexHandler(*dataDir) createIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", createIndexHandler).Methods("PUT") getIndexHandler := bleveHttp.NewGetIndexHandler() getIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", getIndexHandler).Methods("GET") deleteIndexHandler := bleveHttp.NewDeleteIndexHandler(*dataDir) deleteIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", deleteIndexHandler).Methods("DELETE") listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") docIndexHandler := bleveHttp.NewDocIndexHandler("") docIndexHandler.IndexNameLookup = indexNameLookup docIndexHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docIndexHandler).Methods("PUT") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_count", docCountHandler).Methods("GET") docGetHandler := bleveHttp.NewDocGetHandler("") docGetHandler.IndexNameLookup = indexNameLookup docGetHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docGetHandler).Methods("GET") docDeleteHandler := bleveHttp.NewDocDeleteHandler("") docDeleteHandler.IndexNameLookup = indexNameLookup docDeleteHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docDeleteHandler).Methods("DELETE") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_search", searchHandler).Methods("POST") listFieldsHandler := bleveHttp.NewListFieldsHandler("") listFieldsHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_fields", listFieldsHandler).Methods("GET") debugHandler := bleveHttp.NewDebugDocumentHandler("") debugHandler.IndexNameLookup = indexNameLookup debugHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}/_debug", debugHandler).Methods("GET") aliasHandler := bleveHttp.NewAliasHandler() router.Handle("/api/_aliases", aliasHandler).Methods("POST") // start the HTTP server log.Printf("listening on :%s\n", *port) http.Handle("/", router) log.Fatal(http.ListenAndServe(":"+*port, nil)) }
func main() { flag.Parse() expvars.Set("indexes", bleveHttp.IndexStats()) // open the index tpbIndex, err := bleve.Open(*indexPath) if err == bleve.ErrorIndexPathDoesNotExist { log.Printf("Creating new index...") // create a mapping indexMapping := buildIndexMapping() // use the mapping tpbIndex, err = bleve.New(*indexPath, indexMapping) if err != nil { log.Fatal(err) } // index data in the background go func() { err = indexTPB(tpbIndex) if err != nil { log.Fatal(err) } }() } else if err != nil { log.Fatal(err) } else { log.Printf("Opening existing index...") } // create a router to serve static files router := staticFileRouter() // add the API bleveHttp.RegisterIndexName("tpb", tpbIndex) listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") getIndexHandler := bleveHttp.NewGetIndexHandler() getIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/tpb", getIndexHandler).Methods("GET") searchHandler := bleveHttp.NewSearchHandler("tpb") router.Handle("/api/search", searchHandler).Methods("POST") listFieldsHandler := bleveHttp.NewListFieldsHandler("tpb") router.Handle("/api/fields", listFieldsHandler).Methods("GET") docCountHandler := bleveHttp.NewDocCountHandler("tpb") router.Handle("/api/count", docCountHandler).Methods("GET") docGetHandler := bleveHttp.NewDocGetHandler("tpb") docGetHandler.DocIDLookup = docIDLookup router.Handle("/api/tpb/{docID}", docGetHandler).Methods("GET") debugHandler := bleveHttp.NewDebugDocumentHandler("tpb") debugHandler.DocIDLookup = docIDLookup router.Handle("/api/tpb/{docID}/_debug", debugHandler).Methods("GET") aliasHandler := bleveHttp.NewAliasHandler() router.Handle("/api/_aliases", aliasHandler).Methods("POST") // start the HTTP server http.Handle("/", router) bind = fmt.Sprintf("%s:%d", *host, *port) log.Printf("Listening on http://%v", bind) log.Fatal(http.ListenAndServe(bind, nil)) }
func main() { flag.Parse() // walk the data dir and register index names dirEntries, err := ioutil.ReadDir(*dataDir) if err != nil { log.Fatalf("error reading data dir: %v", err) } expvars.Set("indexes", bleveHttp.IndexStats()) for _, dirInfo := range dirEntries { indexPath := *dataDir + string(os.PathSeparator) + dirInfo.Name() // skip single files in data dir since a valid index is a directory that // contains multiple files if !dirInfo.IsDir() { log.Printf("not registering %s, skipping", indexPath) continue } i, err := bleve.Open(indexPath) if err != nil { log.Printf("error opening index %s: %v", indexPath, err) } else { log.Printf("registered index: %s", dirInfo.Name()) bleveHttp.RegisterIndexName(dirInfo.Name(), i) } } router := mux.NewRouter() router.StrictSlash(true) // first install handlers from bleve/http/mapping, for precedence bleveHttpMappingStatic := http.FileServer(bleveHttpMapping.AssetFS()) staticPathDev := *staticPath + "../../bleve/http/mapping/mapping_static/" fi, err := os.Stat(staticPathDev) if err == nil && fi.IsDir() { log.Printf("using dev static resources from %s", staticPathDev) bleveHttpMappingStatic = http.FileServer(http.Dir(staticPathDev)) } router.PathPrefix("/static/partials/analysis").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) router.PathPrefix("/static/partials/mapping").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) router.PathPrefix("/static/js/mapping").Handler( http.StripPrefix("/static/", bleveHttpMappingStatic)) bleveHttpMapping.RegisterHandlers(router, "/api") // next, install our static file handlers staticFileRouter(router) // add the API createIndexHandler := bleveHttp.NewCreateIndexHandler(*dataDir) createIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", createIndexHandler).Methods("PUT") getIndexHandler := bleveHttp.NewGetIndexHandler() getIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", getIndexHandler).Methods("GET") deleteIndexHandler := bleveHttp.NewDeleteIndexHandler(*dataDir) deleteIndexHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}", deleteIndexHandler).Methods("DELETE") listIndexesHandler := bleveHttp.NewListIndexesHandler() router.Handle("/api", listIndexesHandler).Methods("GET") docIndexHandler := bleveHttp.NewDocIndexHandler("") docIndexHandler.IndexNameLookup = indexNameLookup docIndexHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docIndexHandler).Methods("PUT") docCountHandler := bleveHttp.NewDocCountHandler("") docCountHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_count", docCountHandler).Methods("GET") docGetHandler := bleveHttp.NewDocGetHandler("") docGetHandler.IndexNameLookup = indexNameLookup docGetHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docGetHandler).Methods("GET") docDeleteHandler := bleveHttp.NewDocDeleteHandler("") docDeleteHandler.IndexNameLookup = indexNameLookup docDeleteHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}", docDeleteHandler).Methods("DELETE") searchHandler := bleveHttp.NewSearchHandler("") searchHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_search", searchHandler).Methods("POST") listFieldsHandler := bleveHttp.NewListFieldsHandler("") listFieldsHandler.IndexNameLookup = indexNameLookup router.Handle("/api/{indexName}/_fields", listFieldsHandler).Methods("GET") debugHandler := bleveHttp.NewDebugDocumentHandler("") debugHandler.IndexNameLookup = indexNameLookup debugHandler.DocIDLookup = docIDLookup router.Handle("/api/{indexName}/{docID}/_debug", debugHandler).Methods("GET") aliasHandler := bleveHttp.NewAliasHandler() router.Handle("/api/_aliases", aliasHandler).Methods("POST") // start the HTTP server http.Handle("/", router) log.Printf("Listening on %v", *bindAddr) log.Fatal(http.ListenAndServe(*bindAddr, nil)) }