首页 > 首页 > 数据库 > 向量数据库 > Qdrant > [原创]Qdrant 常用维护脚本
2025
12-23

[原创]Qdrant 常用维护脚本

一、根据集合关键字扫描出集合名字

脚本位置:/opt/soft/qdrant_tool/bin

# cat list_qdrant_collection.sh
#!/bin/bash

#要扫描匹配的集合地址
qdrant_cluster="10.100.x.x:6333"

#要扫描匹配的集合关键字
pkey_list=("^rag_knowledge_qa.*_v2$" "^rag_knowledge_file.*_v2$" "^rag_knowledge_text.*_v2$")

function help() {
  echo "the shell script if you execute the error, check the    qdrant  service."
}

function  collection_name_list() {
  for pkey in ${pkey_list[@]}
  do
    echo "开始执行扫描集合:$pkey"  
    curl -XGET  http://$qdrant_cluster/collections -s | jq -r '.result.collections[].name' | grep -E "$pkey"  >>  /opt/soft/qdrant_tool/logs/collection_name_list.txt
  done
}

if [ $# -eq 0 ]; then
  collection_name_list
else
  help
fi

说明:
^rag_knowledge_qa.*_v2$ 指的是匹配精确匹配rag_knowledge_qa开头,_v2结尾的关键字

二、根据扫描出集合名字给集合添加索引

脚本位置:/opt/soft/qdrant_tool/bin

# cat update_qdrant_collection.sh 
#!/bin/bash

# 定义变量
QDRANT_HOST="192.168.x.x:6333"     # Qdrant集群主地址(IP:PORT)
#QDRANT_HOST="192.168.x.x:6333"     # Qdrant集群备地址(IP:PORT)
FIELD_NAME="meta_tags_kv"             # 要索引的字段
FIELD_SCHEMA="keyword"                # 字段类型
COLLECTION_FILE="/opt/soft/qdrant_tool/logs/collection_name_list.txt"  # 集合名称列表文件
COLLECTION_LOG="/opt/soft/qdrant_tool/logs/update_collection_name.log"  # 集合更新信息

# 检查文件是否存在
if [ ! -f "$COLLECTION_FILE" ]; then
  echo "错误:集合名称列表文件不存在 -> $COLLECTION_FILE"
  exit 1
fi

# 使用 while 循环逐行读取文件中的集合名称
while IFS= read -r COLLECTION_NAME; do
  # 跳过空行
  if [ -z "$COLLECTION_NAME" ]; then
    continue
  fi

  echo   "`date +%Y-%m-%d-%H:%M:%S` ${QDRANT_HOST} 正在为集合 '${COLLECTION_NAME}' 创建索引..." >> $COLLECTION_LOG

  # 发送请求并捕获状态码
  http_code=$(curl -s -w "%{http_code}" -X PUT "http://${QDRANT_HOST}/collections/${COLLECTION_NAME}/index" \
    -H "Content-Type: application/json" \
    -d '{
      "field_name": "'${FIELD_NAME}'",
      "field_schema": "'${FIELD_SCHEMA}'"
    }' -o /dev/null)

  # 根据状态码输出结果
  if [ "$http_code" -eq 200 ]; then
    echo "`date +%Y-%m-%d-%H:%M:%S` ${QDRANT_HOST}  索引创建成功: ${COLLECTION_NAME} (HTTP 200)" >> $COLLECTION_LOG 
  else
    echo "`date +%Y-%m-%d-%H:%M:%S` ${QDRANT_HOST}  索引创建失败: ${COLLECTION_NAME} (HTTP ${http_code})" >> $COLLECTION_LOG
  fi

done < "$COLLECTION_FILE"
最后编辑:
作者:摘星怪
这个作者貌似有点懒,什么都没有留下。

留下一个回复

你的email不会被公开。