es:python: 操作elasticsearch中的别名alias:创建、列出、修改指向的索引库、判断是否存在

一,创建别名和列出所有别名

import os
from elasticsearch import Elasticsearch

pwd = os.path.dirname(os.path.realpath(__file__))

ELASTICSEARCH_HOST = 'http://localhost:9200'
client = Elasticsearch(ELASTICSEARCH_HOST, basic_auth=('elastic', '1234'))

# 定义别名的名字:
index_name = "product_7"
alias_name = "prod_alias_7"
# 创建别名
client.indices.put_alias(index=index_name, name=alias_name)

# 列出所有的别名:

# 1. 获取所有索引列表
indices = client.cat.indices(format='json')

# 2. 获取所有 alias 名称
aliases = client.cat.aliases(format='json')
print(aliases)
alias_names = {alias['alias'] for alias in aliases}  # 用集合方便判断
print("所有别名:")
for item in alias_names:
    first_char = item[0]
    if first_char!='.':
        print(item)

 

二,修改别名指向的索引库

import os
from elasticsearch import Elasticsearch

pwd = os.path.dirname(os.path.realpath(__file__))

ELASTICSEARCH_HOST = 'http://localhost:9200'
client = Elasticsearch(ELASTICSEARCH_HOST, basic_auth=('elastic', '1234'))

def get_alias_all_index(alias_name):
    response = client.cat.aliases(name=alias_name, h='index', format='json')

    # 解析响应,找出所有索引
    indices = []
    for item in response:
        indices.append(item['index'])

    print('当前别名指向的索引:')
    print(indices)
    return indices



# 获取别名信息
alias_name = 'prod_alias_7'  # 替换为你的别名名称
new_index = "product_456"
indices = get_alias_all_index(alias_name)

# 改名,让prod_alias_7指向product_456
actions = []
for old_index in indices:
    remove_act = {"remove": {"index": old_index, "alias": alias_name}}
    actions.append(remove_act)

add_act = {"add": {"index": new_index, "alias": alias_name}}
actions.append(add_act)


print('actions')
print(actions)
response = client.indices.update_aliases(actions=actions)

# 改名完成后,查看当前别名指向的所有索引
indices = get_alias_all_index(alias_name)

 

三,判断别名alias是否存在?

import os
from elasticsearch import Elasticsearch

pwd = os.path.dirname(os.path.realpath(__file__))

ELASTICSEARCH_HOST = 'http://localhost:9200'
client = Elasticsearch(ELASTICSEARCH_HOST, basic_auth=('elastic', '1234'))



# 判断alias_name是否存在
def is_exist_alias(alias_name):
    aliases = client.cat.aliases(format='json')
    # print(aliases)
    
    alias_list = []
    for item in aliases:
        first_char = item['alias'][0]
        if first_char != '.':
            print(item)
            alias_list.append(item['alias'])
    
    print(alias_list)
    # 判断是否存在于列表中
    if alias_name in alias_list:
        return True
    else:
        return False

alias_name = 'prod_alias_7'
is_alias = is_exist_alias(alias_name)
print(alias_name+"是否存在:"+str(is_alias))

alias_name = 'prod_alias_a'
is_alias = is_exist_alias(alias_name)
print(alias_name+"是否存在:"+str(is_alias))

 

posted @ 2026-02-22 08:21  刘宏缔的架构森林  阅读(0)  评论(0)    收藏  举报