如何使用go-elasticsearch获取/更新别名?

new9mtju  于 2023-02-03  发布在  ElasticSearch
关注(0)|答案(1)|浏览(113)

我使用的是go-elasticsearch,需要使用Aliases API中的操作:

  • GET _alias/my-alias-name以获取有关别名的信息
  • POST _aliases,用于在原子操作中向别名添加多个索引名

我在go-elasticsearch客户端中找不到这些API的表示,是否有其他方法可以使用库向这些端点发出请求,或者我只需要对这些方法使用普通HTTP客户端?

ruyhziif

ruyhziif1#

终于找到了一种方法,别名API位于索引API内部:

  • GET _alias/my-alias-name:我们可以使用GetAlias()方法获取别名信息,构建如下请求:
res, err := s.client.Indices.GetAlias(
    s.client.Indices.GetAlias.WithName("my-alias-name"),
    s.client.Indices.GetAlias.WithContext(context.Background()),
)
if err != nil {
    log.Fatal(err)
}
// ...parse response
  • POST _aliases要在单个操作中添加或删除别名的索引,我们可以使用UpdateAliases()
type UpdateAliasRequest struct {
    Actions []map[string]*UpdateAliasAction `json:"actions"`
}

// UpdateAliasAction represents an action in the Elasticsearch Aliases API.
type UpdateAliasAction struct {
    Index string `json:"index"`
    Alias string `json:"alias"`
}

updateActions := make([]map[string]*UpdateAliasAction, 0)

removeAction := make(map[string]*UpdateAliasAction)
removeAction["remove"] = &UpdateAliasAction{
    Index: "old-index-00",
    Alias: "my-alias-name",
}
updateActions = append(updateActions, removeAction)

addAction := make(map[string]*UpdateAliasAction)
addAction["add"] = &UpdateAliasAction{
    Index: "new-index-00",
    Alias: "my-alias-name",
}
updateActions = append(updateActions, addAction)

jsonBody, err := json.Marshal(&UpdateAliasRequest{
        Actions: updateActions,
})
if err != nil {
    log.Fatal(err)
}

// make API request
res, err := s.client.Indices.UpdateAliases(
    bytes.NewBuffer(jsonBody),
    s.client.Indices.UpdateAliases.WithContext(context.Background()),
)
if err != nil {
    log.Fatal(err)
}
// ...parse response

相关问题