#!/bin/bash # One-click startup script for SearchEngine # This script starts everything you need set -e cd "$(dirname "$0")" GREEN='\033[0;32m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}SearchEngine一键启动脚本${NC}" echo -e "${GREEN}========================================${NC}" # Step 1: Setup environment echo -e "\n${YELLOW}Step 1/4: 设置环境${NC}" ./setup.sh # Step 2: Check if data is already ingested echo -e "\n${YELLOW}Step 2/4: 检查数据${NC}" source /home/tw/miniconda3/etc/profile.d/conda.sh conda activate searchengine # Check if index exists INDEX_EXISTS=$(python -c " from config.env_config import get_es_config from utils.es_client import ESClient from config import ConfigLoader es_config = get_es_config() es_client = ESClient(hosts=[es_config['host']], username=es_config.get('username'), password=es_config.get('password')) config_loader = ConfigLoader('config/schema') config = config_loader.load_customer_config('customer1') if es_client.index_exists(config.es_index_name): doc_count = es_client.count(config.es_index_name) print(f'{doc_count}') else: print('0') " 2>/dev/null || echo "0") if [ "$INDEX_EXISTS" = "0" ]; then echo -e "${YELLOW}索引不存在,开始导入数据...${NC}" echo -e "${YELLOW}注意: 首次导入会下载模型文件,可能需要10-30分钟${NC}" echo -e "${YELLOW}导入1000条数据进行快速测试(跳过embedding以加快速度)${NC}" ./scripts/ingest.sh 1000 true else echo -e "${GREEN}数据已存在,包含 $INDEX_EXISTS 条文档${NC}" fi # Step 3: Start backend in background echo -e "\n${YELLOW}Step 3/4: 启动后端服务${NC}" echo -e "${YELLOW}后端服务将在后台运行...${NC}" nohup ./scripts/start_backend.sh > logs/backend.log 2>&1 & BACKEND_PID=$! echo $BACKEND_PID > logs/backend.pid echo -e "${GREEN}后端服务已启动 (PID: $BACKEND_PID)${NC}" echo -e "${GREEN}日志文件: logs/backend.log${NC}" # Wait for backend to start echo -e "${YELLOW}等待后端服务启动...${NC}" sleep 5 # Check if backend is running if curl -s http://localhost:6002/admin/health > /dev/null 2>&1; then echo -e "${GREEN}✓ 后端服务运行正常${NC}" else echo -e "${RED}✗ 后端服务启动失败,请检查日志: logs/backend.log${NC}" exit 1 fi # Step 4: Start frontend echo -e "\n${YELLOW}Step 4/4: 启动前端服务${NC}" echo -e "${GREEN}========================================${NC}" echo -e "${GREEN}所有服务启动完成!${NC}" echo -e "${GREEN}========================================${NC}" echo "" echo -e "访问地址:" echo -e " ${GREEN}前端界面: http://localhost:6003${NC}" echo -e " ${GREEN}后端API: http://localhost:6002${NC}" echo -e " ${GREEN}API文档: http://localhost:6002/docs${NC}" echo "" echo -e "日志文件:" echo -e " 后端: logs/backend.log" echo "" echo -e "停止服务:" echo -e " 后端: kill \$(cat logs/backend.pid)" echo -e " 前端: Ctrl+C" echo "" echo -e "${YELLOW}正在启动前端服务...${NC}" echo -e "${YELLOW}按 Ctrl+C 停止前端服务${NC}" echo "" ./scripts/start_frontend.sh