开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:支持ElasticSearch

简介: GoWind Admin|风行是一款企业级前后端一体中后台框架,集成ElasticSearch支持,提供开箱即用的分布式全文搜索能力。内置索引、文档、分片等核心功能封装,轻松实现高效数据检索与分析,适用于日志处理、实时监控等场景,助力企业快速构建高可用应用。

开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:支持ElasticSearch

ElasticSearch(简称 ES)是一款开源的分布式全文搜索引擎,同时也是一个基于 Lucene 的实时分布式存储、搜索和分析引擎。它由Elastic 公司开发,主要用于解决海量数据的实时检索、分析和存储问题,具有高性能、高可用、易扩展等特点,广泛应用于日志分析、全文检索、业务监控等场景。

ElasticSearch 的核心概念

概念 说明
索引(Index) 类似关系型数据库的 “表”,是具有相似结构的文档集合(如 “商品索引”“用户日志索引”)。每个索引有唯一名称,用于操作数据。
文档(Document) 索引中的一条数据,以 JSON 格式存储,类似关系型数据库的 “行”。每个文档有唯一 ID(可自定义或自动生成)。
字段(Field) 文档中的键值对,类似 JSON 的 “键”,对应数据的具体属性(如 “商品名称”“价格”)。
分片(Shard) 索引的最小存储单位,一个索引可分为多个分片(默认 5 个主分片),分布式存储在不同节点,实现并行处理。
副本(Replica) 分片的备份,用于提高查询性能和容错性(默认 1 个副本)。主分片故障时,副本可升级为主分片。
节点(Node) 运行 ES 服务的单个服务器,多个节点组成集群。节点分为主节点(管理集群)、数据节点(存储数据)等角色。
集群(Cluster) 由多个节点组成的集合,共同管理索引数据,对外提供统一的服务入口。

ElasticSearch 与关系型数据库的差异

ElasticSearch 关系型数据库
Index 表(Table)
Document 行(Row)
Field 列(Column)
Mapping 表结构定义
docker pull bitnami/elasticsearch:latest

docker run -itd \
    --name elasticsearch \
    -p 9200:9200 \
    -p 9300:9300 \
    -e ELASTICSEARCH_USERNAME=elastic \
    -e ELASTICSEARCH_PASSWORD=elastic \
    -e ELASTICSEARCH_NODE_NAME=elasticsearch-node-1 \
    -e ELASTICSEARCH_CLUSTER_NAME=elasticsearch-cluster \
    bitnami/elasticsearch:latest

在 Go Wind Admin 中使用 ElasticSearch

我把ElasticSearch的SDK封装了起来,并且提供了配置文件的支持,使用起来非常简单。

首先,我们需要安装库:

go get github.com/tx7do/kratos-bootstrap/database/elasticsearch

接着在数据库的配置文件data.yaml中添加ElasticSearch的配置:

data:
  elastic_search:
    addresses:
      - "http://localhost:9200"
    username: "elastic"
    password: "elastic"

现在,我们开始创建客户端:

package data

import (
    "github.com/tx7do/kratos-bootstrap/database/elasticsearch"
)

func NewElasticSearchClient(logger log.Logger, cfg *conf.Bootstrap) *elasticsearch.Client {
   
    cli, err := elasticsearch.NewClient(logger, cfg)
    if err != nil {
   
        return nil
    }
    return cli
}

data/init.go注入到wire:

//go:build wireinject
// +build wireinject

package data

import "github.com/google/wire"

var ProviderSet = wire.NewSet(
    NewElasticSearchClient,
)

在这里,我们以股票的K线(蜡烛图)为实例,来讲解如何使用ElasticSearch。

首先,定义模型:

package data

import "time"

type Candle struct {
   
    Timestamp *time.Time `json:"timestamp"`
    Symbol    *string    `json:"symbol"`
    Open      *float64   `json:"open"`
    High      *float64   `json:"high"`
    Low       *float64   `json:"low"`
    Close     *float64   `json:"close" `
    Volume    *float64   `json:"volume"`
}

const CandleMapping = `
{
  "mappings": {
    "properties": {
      "timestamp": {"type": "date"},
      "symbol": {"type": "keyword"},
      "open": {"type": "double"},
      "high": {"type": "double"},
      "low": {"type": "double"},
      "close": {"type": "double"},
      "volume": {"type": "double"}
    }
  }
}`

最后,实现CancleRepo

package data

import (
    "github.com/go-kratos/kratos/v2/log"
    "github.com/tx7do/kratos-bootstrap/database/elasticsearch"
)

const candleIndex = "candles"

type CandleRepo struct {
   
    client *elasticsearch.Client
    log    *log.Helper
}

func NewCandleRepo(logger log.Logger, client *elasticsearch.Client) *CandleRepo {
   
    repo := &CandleRepo{
   
        log:    log.NewHelper(log.With(logger, "module", "candle/elasticsearch/repo")),
        client: client,
    }

    ctx := context.Background()

    if exists, _ := repo.client.IndexExists(ctx, candleIndex); !exists {
   
        _ = repo.client.CreateIndex(ctx, candleIndex, CandleMapping, "")
    }

    return repo
}

func (r *CandleRepo) Create(ctx context.Context, req *Candle) error {
   
    if req == nil {
   
        return candleV1.ErrorBadRequest("request data is required")
    }

    err := r.client.InsertDocument(ctx, candleIndex, "", req)
    if err != nil {
   
        r.log.Errorf("create candle failed: %s", err.Error())
        return candleV1.ErrorInternalServerError("create candle failed")
    }
    return nil
}

项目代码

目录
相关文章
|
1月前
|
前端开发 JavaScript Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:为什么选 Golang+Vue3 这套组合?
go-wind-admin 采用 Golang + Vue3 技术栈,融合高性能后端与高效前端生态。后端基于 go-kratos、ent/gorm 灵活适配复杂业务,前端结合 Vue3、TypeScript 与 Vben Admin,提升开发效率与可维护性,兼顾性能、扩展性与企业级需求,是中后台系统的理想选择。(239字)
222 6
|
1月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 11 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
阿里云微服务引擎 MSE 及 API 网关 2025 年 11 月产品动态
|
3月前
|
负载均衡 算法 Java
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
325 0
|
前端开发 Go API
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:数据脱敏和隐私保护
GoWind Admin基于Protobuf生态,集成protoc-gen-redact插件,实现开箱即用的数据脱敏与隐私保护。通过注解定义规则,自动生成脱敏代码,支持多语言、灵活配置,零侵入业务逻辑,适用于微服务、日志、前端等场景,保障数据安全合规。
134 0
|
前端开发 安全 API
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:自动化解放双手,初学者快速搭建系统并自动生成前端接口
GoWind Admin 是基于 Go-Kratos 与 Vue3 的企业级中后台框架,开箱即用,集成用户、权限、租户等核心模块。搭配 protoc-gen-typescript-http,可从 Protobuf 自动生成类型安全的前端接口,大幅降低联调成本,提升开发效率,助力初学者快速搭建系统,实现前后端高效协作。
250 0
|
1月前
|
关系型数据库 API Go
初学者友好:Go-Kratos 集成 go-crud,GORM ORM CRUD 无需重复编码,轻松上手
本文介绍如何在Go-Kratos微服务中集成go-curd与GORM,实现CRUD操作免重复编码。基于kratos-gorm-example项目,通过step-by-step教程,帮助初学者快速上手:从环境搭建、模型定义到API开发,全程简化数据操作,显著提升开发效率,适合Go新手快速构建微服务应用。
148 2
|
存储 前端开发 Go
开箱即用的 GoWind Admin|风行,企业级前后端一体中后台框架:站内信
GoWind Admin 基于 Kratos 框架,提供开箱即用的站内信模块,支持消息推送、实时通知、分类管理与多用户收发,助力企业级后台高效集成通信功能。
208 0
|
5月前
|
存储 运维 安全
金融级 ZooKeeper 来袭:性能提升100%,SLA 99.99%,数据防护升级
阿里云微服务引擎 MSE ZooKeeper 企业版正式发布,提供比专业版更高的稳定性与安全能力,SLA 达 99.99%,整体服务性能提升 100%。针对关键业务,企业版通过独享资源池实现更高规格配额,满足大规模需求。此外新增数据备份容灾、容量管理反脆弱限流等功能,提升整体企业级特性,助力企业应对复杂业务挑战。
397 137
金融级 ZooKeeper 来袭:性能提升100%,SLA 99.99%,数据防护升级
|
5月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 8 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要。
496 152
|
2月前
|
运维 Cloud Native 应用服务中间件
阿里云微服务引擎 MSE 及 API 网关 2025 年 10 月产品动态
阿里云微服务引擎 MSE 面向业界主流开源微服务项目, 提供注册配置中心和分布式协调(原生支持 Nacos/ZooKeeper/Eureka )、云原生网关(原生支持Higress/Nginx/Envoy,遵循Ingress标准)、微服务治理(原生支持 Spring Cloud/Dubbo/Sentinel,遵循 OpenSergo 服务治理规范)能力。API 网关 (API Gateway),提供 APl 托管服务,覆盖设计、开发、测试、发布、售卖、运维监测、安全管控、下线等 API 生命周期阶段。帮助您快速构建以 API 为核心的系统架构.满足新技术引入、系统集成、业务中台等诸多场景需要
阿里云微服务引擎 MSE 及 API 网关 2025 年 10 月产品动态