使用 Go gorm 同步mysql 的数据到 meilisearch

10 min read

可以使用以下步骤使用 Go gorm 同步 MySQL 数据到 MeiliSearch:

  1. 安装 MeiliSearch 和 Go gorm

我们需要安装 MeiliSearch 和 Go gorm 的库。可以通过以下命令来安装它们:

# 安装 MeiliSearch
curl -L https://install.meilisearch.com | sh

# 安装 Go gorm
go get -u gorm.io/gorm
  1. 连接到 MySQL 数据库

使用 gorm,我们可以轻松地连接到 MySQL 数据库。在这里,我们将连接到名为 mydatabase 的数据库。

dsn := "root:password@tcp(127.0.0.1:3306)/mydatabase?charset=utf8mb4&parseTime=True&loc=Local"
db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
if err != nil {
    panic("failed to connect database")
}
  1. 配置 MeiliSearch

我们需要配置 MeiliSearch,以便能够将数据同步到索引中。我们需要给 MeiliSearch 提供一个 API key 和索引名称。

// 在 MeiliSearch 中创建索引
client := meilisearch.NewClient(meilisearch.Config{
    Host:   "http://localhost:7700",
    APIKey: "masterKey",
})

indexUID := "my-index"
_, err := client.Indexes().Create(meilisearch.CreateIndexRequest{
    UID: indexUID,
})
if err != nil {
    panic("failed to create index")
}
  1. 同步数据到 MeiliSearch

使用 gorm,我们可以轻松地将 MySQL 数据库中的数据同步到 MeiliSearch 索引中。我们需要首先从数据库中获取所有数据,然后将每个数据对象转换为 MeiliSearch 的文档格式,并将其添加到索引中。

// 从数据库中获取所有数据
var data []MyData
db.Find(&data)

// 将每个数据转换为 MeiliSearch 文档格式并添加到索引中
index := client.Indexes().GetOrCreate(indexUID)
for _, item := range data {
    document := map[string]interface{}{
        "id":      item.ID,
        "field1":  item.Field1,
        "field2":  item.Field2,
        "field3":  item.Field3,
    }
    _, err = index.AddDocuments([]interface{}{document})
    if err != nil {
        panic("failed to add document to index")
    }
}

以上就是使用 Go gorm 同步 MySQL 数据到 MeiliSearch 的基本步骤。需要根据实际情况进行适当的修改。