gin-vue-admin整合 ElasticSearch

config.yml

elasticsearch:
  enable: true
  url: http://192.168.217.142:9200
  sniff: false  #将返回的url 作为请求的路径
  healthcheckInterval: 5s
  index-prefix: gva

新增配置结构体

config/elasticsearch.go

type ElasticSearch struct {
	Enable              bool          `mapstructure:"enable" json:"enable" yaml:"enable"`
	URL                 string        `mapstructure:"url" json:"url" yaml:"url"`
	Sniff               bool          `mapstructure:"sniff" json:"sniff" yaml:"sniff"`
	HealthcheckInterval time.Duration `mapstructure:"healthcheckInterval" json:"healthcheckInterval" yaml:"healthcheckInterval"`
	IndexPrefix         string        `mapstructure:"index-prefix" json:"index-prefix" yaml:"index-prefix"`
	// mapstructure 将通用的map[string]interface{} 解码到对应的结构体中
}

嵌入主配置

config/config.go

	ElasticSearch ElasticSearch `mapstructure:"elasticsearch" json:"elasticsearch" yaml:"elasticsearch"`

定义全局配置

GVA_ELASTIC *elastic.Client

创建客户端

func InitES() {
	elasticConfig := global.GVA_CONFIG.ElasticSearch
	if elasticConfig.Enable {
		fmt.Printf("elasticsearch: %v\n", elasticConfig)
		client, err := elastic.NewClient(
			elastic.SetURL(elasticConfig.URL),
			elastic.SetSniff(elasticConfig.Sniff),
			elastic.SetHealthcheckInterval(elasticConfig.HealthcheckInterval),
		)
		if err != nil {
			global.GVA_LOG.Error("创建ElasticSearch 客户端错误", zap.Error(err))
		}
		global.GVA_ELASTIC = client
	}
}

创建控制器 实现简单的ES查询

api/system/sys_elasticsearch.go 

const indexName = "test"    # 对应的es中的索引

func (b *BaseApi) SearchById(c *gin.Context) {
	id, _ := c.GetQuery("id")
	res, err := global.GVA_ELASTIC.Get().Index(indexName).Type("_doc").Id(id).Do(c)
	if err != nil {
		response.FailWithMessage("查询失败", c)
	}
	response.OkWithDetailed(res.Source, "查询到的记录", c)
}

注册路由

router/sys_elastic.go

type ElasticRouter struct {
}

func (s *ElasticRouter) ElasticOpsRouter(Router *gin.RouterGroup) {
	EsRouter := Router.Group("es").Use(middleware.OperationRecord())
	var baseApi = v1.ApiGroupApp.SystemApiGroup.BaseApi
	{
		EsRouter.GET("searchById", baseApi.SearchById) //

	}

}

继承到入口函数 加载到main的启动中

	initialize.InitES() // 初始化ElasticSearch

请求测试结果

http://localhost:8888/es/searchById?id=5

const config = { base: './', // index.html文件所在位置 root: './', // js导入的资源路径,src resolve: { alias, }, define: { 'process.env': {} }, server: { // 如果使用docker-compose开发模式,设置为false open: true, port: process.env.VITE_CLI_PORT, proxy: { // 把key的路径代理到target位置 // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VITE_BASE_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_PATH}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''), }, [process.env.VITE_BASE_EXPORT_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_REPORTAPI}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_EXPORT_API), ''), }, }, }, build: { target: 'es2017', minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser manifest: false, // 是否产出manifest.json sourcemap: false, // 是否产出sourcemap.json outDir: 'dist', // 产出目录 // rollupOptions, }, esbuild, optimizeDeps, plugins: [ GvaPositionServer(), GvaPosition(), legacyPlugin({ targets: ['Android > 39', 'Chrome >= 60', 'Safari >= 10.1', 'iOS >= 10.3', 'Firefox >= 54', 'Edge >= 15'], }), vuePlugin(), [Banner(\n Build based on gin-vue-admin \n Time : ${timestamp})] ], css: { preprocessorOptions: { scss: { additionalData: @use "@/style/element/index.scss" as *;, } } }, } ENV = 'production' VITE_PUBLIC_PATH = '/devOnlineStatus/' VITE_CLI_PORT = 8080 VITE_SERVER_PORT = 8888 VITE_BASE_API = /api #下方修改为你的线上ip VITE_BASE_PATH = https://demo.gin-vue-admin.com # router 模式 VITE_APP_USE_HASH = true 请帮我修改以上代码,当build打包时,前端页面url新增VITE_PUBLIC_PATH前缀
07-20
const config = { base: './', // index.html文件所在位置 root: './', // js导入的资源路径,src resolve: { alias, }, define: { 'process.env': {} }, server: { // 如果使用docker-compose开发模式,设置为false open: true, port: process.env.VITE_CLI_PORT, proxy: { // 把key的路径代理到target位置 // detail: https://cli.vuejs.org/config/#devserver-proxy [process.env.VITE_BASE_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_PATH}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_API), ''), }, [process.env.VITE_BASE_EXPORT_API]: { // 需要代理的路径 例如 '/api' target: `${process.env.VITE_BASE_REPORTAPI}/`, // 代理到 目标路径 changeOrigin: true, rewrite: path => path.replace(new RegExp('^' + process.env.VITE_BASE_EXPORT_API), ''), }, }, }, build: { target: 'es2017', minify: 'terser', // 是否进行压缩,boolean | 'terser' | 'esbuild',默认使用terser manifest: false, // 是否产出manifest.json sourcemap: false, // 是否产出sourcemap.json outDir: 'dist', // 产出目录 // rollupOptions, }, esbuild, optimizeDeps, plugins: [ GvaPositionServer(), GvaPosition(), legacyPlugin({ targets: ['Android > 39', 'Chrome >= 60', 'Safari >= 10.1', 'iOS >= 10.3', 'Firefox >= 54', 'Edge >= 15'], }), vuePlugin(), [Banner(`\n Build based on gin-vue-admin \n Time : ${timestamp}`)] ], css: { preprocessorOptions: { scss: { additionalData: `@use "@/style/element/index.scss" as *;`, } } }, } 请帮我修改以上代码,当build打包时,前端页面url新增VITE_PUBLIC_PATH= '/devOnlineStatus/'前缀
07-15
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

村长在路上

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值