Blame view

scripts/create_tenant_index.sh 1.9 KB
80f87e57   tangwang   多语言索引修改 对应的 索引创建、...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  #!/bin/bash
  
  # 为租户创建 ES 索引
  # 用法: ./scripts/create_tenant_index.sh <tenant_id>
  
  # 切换到项目根目录
  cd "$(dirname "$0")/.."
  
  # 加载 .env 文件(如果存在)
  if [ -f .env ]; then
      set -a
      source .env
      set +a
  fi
  
  ES_HOST="${ES_HOST:-http://localhost:9200}"
  ES_USERNAME="${ES_USERNAME:-}"
  ES_PASSWORD="${ES_PASSWORD:-}"
648cb4c2   tangwang   ES docs
19
  ES_INDEX_NAMESPACE="${ES_INDEX_NAMESPACE:-}"
80f87e57   tangwang   多语言索引修改 对应的 索引创建、...
20
21
22
23
24
25
26
27
28
  
  # 检查命令行参数
  if [ $# -eq 0 ]; then
      echo "用法: $0 <tenant_id>"
      echo "示例: $0 170"
      exit 1
  fi
  
  TENANT_ID="$1"
648cb4c2   tangwang   ES docs
29
30
  BASE_INDEX_NAME="search_products_tenant_${TENANT_ID}"
  ES_INDEX="${ES_INDEX_NAMESPACE}${BASE_INDEX_NAME}"
80f87e57   tangwang   多语言索引修改 对应的 索引创建、...
31
32
33
34
35
36
37
38
39
40
41
  MAPPING_FILE="mappings/search_products.json"
  
  # 检查 mapping 文件是否存在
  if [ ! -f "$MAPPING_FILE" ]; then
      echo "错误: mapping 文件不存在: $MAPPING_FILE"
      exit 1
  fi
  
  # 手动确认
  echo "创建索引前,将删除已有的同名索引。"
  echo "索引名称: $ES_INDEX"
648cb4c2   tangwang   ES docs
42
  echo "(注意:包含环境前缀 ES_INDEX_NAMESPACE='${ES_INDEX_NAMESPACE}')"
80f87e57   tangwang   多语言索引修改 对应的 索引创建、...
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
  echo "请输入索引名称 '$ES_INDEX' 来确认:"
  read -r user_input
  
  if [ "$user_input" != "$ES_INDEX" ]; then
      echo "确认失败,索引名称不匹配。退出操作。"
      exit 1
  fi
  
  echo "确认成功,继续创建索引..."
  
  # 构建 curl 认证参数
  AUTH_PARAM=""
  if [ -n "$ES_USERNAME" ] && [ -n "$ES_PASSWORD" ]; then
      AUTH_PARAM="-u ${ES_USERNAME}:${ES_PASSWORD}"
  fi
  
  # 删除已存在的索引(如果存在)
  echo
  echo "删除索引: $ES_INDEX"
  echo
  curl -X DELETE "${ES_HOST}/${ES_INDEX}" $AUTH_PARAM -s -o /dev/null -w "HTTP状态码: %{http_code}\n"
  
  echo
  echo "创建索引: $ES_INDEX"
  echo
  
  # 创建索引(使用 mapping 文件)
  curl -X PUT "${ES_HOST}/${ES_INDEX}" \
      -H "Content-Type: application/json" \
      $AUTH_PARAM \
      -d @"${MAPPING_FILE}" \
      -w "\nHTTP状态码: %{http_code}\n"
  
  echo
  echo "完成!"
  echo "提示: 请调用 /indexer/reindex 接口导入数据"