diff --git a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/build_index.py b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/build_index.py index 3c4acd74..22369c44 100644 --- a/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/build_index.py +++ b/djangoblog/src/DjangoBlog-master/DjangoBlog-master/blog/management/commands/build_index.py @@ -1,18 +1,45 @@ +# 导入Django命令基类,用于创建自定义管理命令 from django.core.management.base import BaseCommand -from blog.documents import ElapsedTimeDocument, ArticleDocumentManager, ElaspedTimeDocumentManager, \ - ELASTICSEARCH_ENABLED +# 导入博客相关的Elasticsearch文档管理器和配置 +from blog.documents import ( + ElapsedTimeDocument, # 耗时统计文档模型 + ArticleDocumentManager, # 文章文档管理器 + ElaspedTimeDocumentManager, # 耗时统计文档管理器(注:原拼写可能存在笔误,应为Elapsed) + ELASTICSEARCH_ENABLED # Elasticsearch启用状态标记 +) -# TODO 参数化 +# TODO: 后续可优化为支持参数化(如指定重建的索引类型等) class Command(BaseCommand): + """ + Django自定义管理命令:构建Elasticsearch搜索索引 + 用于初始化或重建文章和耗时统计相关的搜索索引 + """ + # 命令的帮助信息(使用python manage.py help build_index时显示) help = 'build search index' def handle(self, *args, **options): + """ + 命令核心执行方法 + 当运行python manage.py build_index时调用 + """ + # 仅在Elasticsearch启用时执行索引构建 if ELASTICSEARCH_ENABLED: + # 构建耗时统计文档的索引 ElaspedTimeDocumentManager.build_index() - manager = ElapsedTimeDocument() - manager.init() - manager = ArticleDocumentManager() - manager.delete_index() - manager.rebuild() + + # 初始化耗时统计文档的索引结构 + elapsed_manager = ElapsedTimeDocument() + elapsed_manager.init() # 创建索引映射 + + # 处理文章文档索引:先删除旧索引,再重建 + article_manager = ArticleDocumentManager() + article_manager.delete_index() # 删除现有文章索引 + article_manager.rebuild() # 重新创建索引并同步数据 + + # 输出成功信息到控制台 + self.stdout.write(self.style.SUCCESS('Successfully built search indexes')) + else: + # 当Elasticsearch未启用时,提示用户 + self.stdout.write(self.style.WARNING('Elasticsearch is not enabled, skipping index build')) \ No newline at end of file