refactoring elasticsearch model
This commit is contained in:
parent
c7f184b466
commit
d05c039b48
|
@ -1,4 +1,4 @@
|
|||
package system
|
||||
package cluster
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
@ -7,7 +7,6 @@ import (
|
|||
"infini.sh/framework/core/elastic"
|
||||
"infini.sh/framework/core/util"
|
||||
"infini.sh/search-center/config"
|
||||
"infini.sh/search-center/model"
|
||||
"infini.sh/framework/core/orm"
|
||||
"net/http"
|
||||
"strings"
|
||||
|
@ -20,7 +19,7 @@ type APIHandler struct {
|
|||
}
|
||||
|
||||
func (h *APIHandler) HandleCreateClusterAction(w http.ResponseWriter, req *http.Request, ps httprouter.Params){
|
||||
var conf = &model.ClusterConfig{}
|
||||
var conf = &elastic.ElasticsearchConfig{}
|
||||
resBody := map[string] interface{}{
|
||||
}
|
||||
err := h.DecodeJSON(req, conf)
|
||||
|
@ -36,7 +35,7 @@ func (h *APIHandler) HandleCreateClusterAction(w http.ResponseWriter, req *http.
|
|||
conf.Enabled=true
|
||||
conf.Updated = conf.Created
|
||||
//conf.ID = id
|
||||
index:=orm.GetIndexName(model.ClusterConfig{})
|
||||
index:=orm.GetIndexName(elastic.ElasticsearchConfig{})
|
||||
_, err = esClient.Index(index, "", id, conf)
|
||||
if err != nil {
|
||||
resBody["error"] = err
|
||||
|
@ -66,7 +65,7 @@ func (h *APIHandler) HandleUpdateClusterAction(w http.ResponseWriter, req *http.
|
|||
}
|
||||
id := ps.ByName("id")
|
||||
esClient := elastic.GetClient(h.Config.Elasticsearch)
|
||||
indexName := orm.GetIndexName(model.ClusterConfig{})
|
||||
indexName := orm.GetIndexName(elastic.ElasticsearchConfig{})
|
||||
originConf, err := esClient.Get(indexName, "", id)
|
||||
if err != nil {
|
||||
resBody["error"] = err.Error()
|
||||
|
@ -98,7 +97,7 @@ func (h *APIHandler) HandleDeleteClusterAction(w http.ResponseWriter, req *http.
|
|||
}
|
||||
id := ps.ByName("id")
|
||||
esClient := elastic.GetClient(h.Config.Elasticsearch)
|
||||
response, err := esClient.Delete(orm.GetIndexName(model.ClusterConfig{}), "", id)
|
||||
response, err := esClient.Delete(orm.GetIndexName(elastic.ElasticsearchConfig{}), "", id)
|
||||
|
||||
if err != nil {
|
||||
resBody["error"] = err.Error()
|
||||
|
@ -135,7 +134,7 @@ func (h *APIHandler) HandleSearchClusterAction(w http.ResponseWriter, req *http.
|
|||
|
||||
queryDSL = fmt.Sprintf(queryDSL, mustBuilder.String())
|
||||
esClient := elastic.GetClient(h.Config.Elasticsearch)
|
||||
res, err := esClient.SearchWithRawQueryDSL(orm.GetIndexName(model.ClusterConfig{}), []byte(queryDSL))
|
||||
res, err := esClient.SearchWithRawQueryDSL(orm.GetIndexName(elastic.ElasticsearchConfig{}), []byte(queryDSL))
|
||||
if err != nil {
|
||||
resBody["error"] = err.Error()
|
||||
h.WriteJSON(w, resBody, http.StatusInternalServerError)
|
||||
|
@ -143,4 +142,16 @@ func (h *APIHandler) HandleSearchClusterAction(w http.ResponseWriter, req *http.
|
|||
}
|
||||
|
||||
h.WriteJSON(w, res, http.StatusOK)
|
||||
}
|
||||
}
|
||||
|
||||
//new
|
||||
func (h *APIHandler) HandleClusterMetricsAction(w http.ResponseWriter, req *http.Request, ps httprouter.Params){
|
||||
resBody := map[string] interface{}{}
|
||||
id := ps.ByName("id")
|
||||
|
||||
//esClient := elastic.GetClient(h.Config.Elasticsearch)
|
||||
|
||||
//resBody["summary"] = conf
|
||||
resBody["metrics"] = id
|
||||
|
||||
h.WriteJSON(w, resBody,http.StatusOK)}
|
|
@ -0,0 +1,16 @@
|
|||
package cluster
|
||||
|
||||
import (
|
||||
httprouter "infini.sh/framework/core/api/router"
|
||||
"net/http"
|
||||
)
|
||||
|
||||
func (handler APIHandler) GetClusterVersion(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
|
||||
//client := elastic.GetClient(handler.Config.Elasticsearch)
|
||||
//ver := client.GetMajorVersion()
|
||||
//resBody := handler.newResponseBody()
|
||||
//resBody["payload"] = map[string]int{
|
||||
// "major": ver,
|
||||
//}
|
||||
//handler.WriteJSON(w, resBody, http.StatusOK)
|
||||
}
|
|
@ -1,17 +0,0 @@
|
|||
package index_management
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
httprouter "infini.sh/framework/core/api/router"
|
||||
"infini.sh/framework/core/elastic"
|
||||
)
|
||||
|
||||
func (handler APIHandler) GetClusterVersion(w http.ResponseWriter, req *http.Request, ps httprouter.Params) {
|
||||
client := elastic.GetClient(handler.Config.Elasticsearch)
|
||||
ver := client.GetMajorVersion()
|
||||
resBody := newResponseBody()
|
||||
resBody["payload"] = map[string]int{
|
||||
"major": ver,
|
||||
}
|
||||
handler.WriteJSON(w, resBody, http.StatusOK)
|
||||
}
|
|
@ -6,7 +6,7 @@ import (
|
|||
"infini.sh/framework/core/task"
|
||||
"infini.sh/framework/core/ui"
|
||||
"infini.sh/search-center/api/index_management"
|
||||
"infini.sh/search-center/api/system"
|
||||
"infini.sh/search-center/api/cluster"
|
||||
"infini.sh/search-center/config"
|
||||
"path"
|
||||
)
|
||||
|
@ -48,10 +48,11 @@ func Init(cfg *config.AppConfig) {
|
|||
},
|
||||
})
|
||||
|
||||
shdl := system.APIHandler{
|
||||
shdl := cluster.APIHandler{
|
||||
Config: cfg,
|
||||
}
|
||||
ui.HandleUIMethod(api.GET, path.Join(pathPrefix, "/cluster/:cluster/version"), handler.GetClusterVersion)
|
||||
ui.HandleUIMethod(api.GET, path.Join(pathPrefix, "/cluster/:id/version"), shdl.GetClusterVersion)
|
||||
ui.HandleUIMethod(api.GET, path.Join(pathPrefix, "/cluster/:id/metrics"), shdl.HandleClusterMetricsAction)
|
||||
ui.HandleUIMethod(api.POST, path.Join(pathPrefix, "/cluster"), shdl.HandleCreateClusterAction)
|
||||
ui.HandleUIMethod(api.PUT, path.Join(pathPrefix, "/cluster/:id"), shdl.HandleUpdateClusterAction)
|
||||
ui.HandleUIMethod(api.DELETE, path.Join(pathPrefix, "/cluster/:id"), shdl.HandleDeleteClusterAction)
|
||||
|
|
3
main.go
3
main.go
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"errors"
|
||||
_ "expvar"
|
||||
"infini.sh/framework/core/elastic"
|
||||
|
||||
"infini.sh/framework"
|
||||
"infini.sh/framework/core/env"
|
||||
|
@ -71,7 +72,7 @@ func main() {
|
|||
}, func() {
|
||||
orm.RegisterSchemaWithIndexName(model.Dict{}, "dict")
|
||||
orm.RegisterSchemaWithIndexName(model.Reindex{}, "reindex")
|
||||
orm.RegisterSchemaWithIndexName(model.ClusterConfig{}, "cluster")
|
||||
orm.RegisterSchemaWithIndexName(elastic.ElasticsearchConfig{}, "cluster")
|
||||
})
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
package model
|
||||
|
||||
//type ClusterConfig struct {
|
||||
// //ID string `json:"id" elastic_meta:"_id"`
|
||||
// Name string `json:"name" elastic_mapping:"name:{type:text}"`
|
||||
// Endpoint string `json:"endpoint" elastic_mapping:"endpoint:{type:text}"`
|
||||
// BasicAuth struct {
|
||||
// UserName string `json:"username,omitempty" elastic_mapping:"username:{type:keyword}"`
|
||||
// Password string `json:"password,omitempty" elastic_mapping:"password:{type:keyword}" `
|
||||
// } `json:"basic_auth,omitempty" elastic_mapping:"basic_auth:{type:object}"`
|
||||
// Order int `json:"order,omitempty" elastic_mapping:"order:{type:integer}"`
|
||||
// Description string `json:"description,omitempty" elastic_mapping:"description:{type:text}"`
|
||||
// Enabled bool `json:"enabled" elastic_mapping:"enabled:{type:boolean}"`
|
||||
// Created time.Time `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
|
||||
// Updated time.Time `json:"updated,omitempty" elastic_mapping:"updated:{type:date}"`
|
||||
//}
|
|
@ -1,18 +0,0 @@
|
|||
package model
|
||||
|
||||
import "time"
|
||||
|
||||
type ClusterConfig struct {
|
||||
//ID string `json:"id" elastic_meta:"_id"`
|
||||
Name string `json:"name" elastic_mapping:"name:{type:text}"`
|
||||
Endpoint string `json:"endpoint" elastic_mapping:"endpoint:{type:text}"`
|
||||
BasicAuth struct {
|
||||
UserName string `json:"username,omitempty" elastic_mapping:"username:{type:keyword}"`
|
||||
Password string `json:"password,omitempty" elastic_mapping:"password:{type:keyword}" `
|
||||
} `json:"basic_auth,omitempty" elastic_mapping:"basic_auth:{type:object}"`
|
||||
Order int `json:"order,omitempty" elastic_mapping:"order:{type:integer}"`
|
||||
Description string `json:"description,omitempty" elastic_mapping:"description:{type:text}"`
|
||||
Enabled bool `json:"enabled" elastic_mapping:"enabled:{type:boolean}"`
|
||||
Created time.Time `json:"created,omitempty" elastic_mapping:"created:{type:date}"`
|
||||
Updated time.Time `json:"updated,omitempty" elastic_mapping:"updated:{type:date}"`
|
||||
}
|
|
@ -26,6 +26,23 @@ export default {
|
|||
"name": "cluster1",
|
||||
"updated": "2021-02-20T16:03:30.867084+08:00"
|
||||
}
|
||||
},
|
||||
{
|
||||
"_index": ".infini-search-center_cluster",
|
||||
"_type": "_doc",
|
||||
"_id": "c0oc4kkgq9s8qss2uk51",
|
||||
"_source": {
|
||||
"basic_auth": {
|
||||
"password": "123",
|
||||
"username": "medcl"
|
||||
},
|
||||
"created": "2021-02-20T16:03:30.867084+08:00",
|
||||
"description": "xx业务集群2",
|
||||
"enabled": false,
|
||||
"endpoint": "http://localhost:9201",
|
||||
"name": "cluster2",
|
||||
"updated": "2021-02-20T16:03:30.867084+08:00"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -138,8 +138,9 @@ const vstyle = {
|
|||
marginRight: "5px"
|
||||
};
|
||||
|
||||
@connect(({clusterMonitor}) => ({
|
||||
clusterMonitor
|
||||
@connect(({clusterMonitor,global}) => ({
|
||||
clusterMonitor,
|
||||
selectedCluster: global.selectedCluster
|
||||
}))
|
||||
|
||||
class ClusterMonitor extends PureComponent {
|
||||
|
@ -183,10 +184,12 @@ class ClusterMonitor extends PureComponent {
|
|||
timeMask = 'YY-MM-DD'
|
||||
}
|
||||
this.setState({timeScale: {min: timeRange.min, max: timeRange.max, mask: timeMask}});
|
||||
// console.log(this.props.selectedCluster)
|
||||
dispatch({
|
||||
type: 'clusterMonitor/fetchClusterMetrics',
|
||||
payload: {
|
||||
timeRange: timeRange,
|
||||
cluster_id:this.props.selectedCluster?this.props.selectedCluster.id:''
|
||||
},
|
||||
});
|
||||
}
|
||||
|
@ -197,6 +200,9 @@ class ClusterMonitor extends PureComponent {
|
|||
|
||||
componentDidMount() {
|
||||
const {match, location} = this.props;
|
||||
|
||||
|
||||
|
||||
let min = location.query.start || '2020-12-10 15:00';
|
||||
let max = location.query.end || '2020-12-10 16:00';
|
||||
min = moment(min, 'YYYY-MM-DD HH:mm');
|
||||
|
@ -462,7 +468,9 @@ class ClusterMonitor extends PureComponent {
|
|||
</Input.Group>
|
||||
</div>
|
||||
|
||||
<Card style={{marginBottom: 5}}>
|
||||
<Card
|
||||
// title={this.props.selectedCluster?this.props.selectedCluster.name:''}
|
||||
style={{marginBottom: 5}}>
|
||||
<Row>
|
||||
<Col md={2} xs={4}>
|
||||
<Statistic valueStyle={vstyle} title="在线时长" value={clusterStats.uptime}/>
|
||||
|
|
|
@ -22,6 +22,7 @@ let HealthCircle = (props)=>{
|
|||
@connect(({global}) => ({
|
||||
selectedCluster: global.selectedCluster
|
||||
}))
|
||||
|
||||
class Overview extends React.Component {
|
||||
state = {
|
||||
data: [{id:"JFpIbacZQamv9hkgQEDZ2Q", name:"single-es", endpoint:"http://localhost:9200", health: "green", version: "7.10.0", uptime:"320883955"}]
|
||||
|
@ -187,4 +188,4 @@ class Overview extends React.Component {
|
|||
}
|
||||
}
|
||||
|
||||
export default Overview;
|
||||
export default Overview;
|
||||
|
|
|
@ -8,8 +8,8 @@ export async function getClusterVersion(params) {
|
|||
}
|
||||
|
||||
export async function getClusterMetrics(params) {
|
||||
let id = params.id;
|
||||
delete(params['id']);
|
||||
let id = params.cluster_id;
|
||||
delete(params['cluster_id']);
|
||||
return request(`${pathPrefix}/cluster/${id}/metrics`, {
|
||||
method: 'GET'
|
||||
});
|
||||
|
|
Loading…
Reference in New Issue