This commit is contained in:
2025-08-19 09:18:25 +08:00
parent f0cefdfdff
commit 11d4b33170
3 changed files with 72 additions and 46 deletions

View File

@@ -1,47 +1,14 @@
import warnings
from elasticsearch import Elasticsearch
from Config import Config from Config import Config
from ElasticSearch.Utils.EsSearchUtil import EsSearchUtil, disableWarning
# 抑制HTTPS相关警告 # 禁用警告
warnings.filterwarnings('ignore', message='Connecting to .* using TLS with verify_certs=False is insecure') disableWarning()
warnings.filterwarnings('ignore', message='Unverified HTTPS request is being made to host')
# 初始化ES连接 # 创建EsSearchUtil实例
es = Elasticsearch( search_util = EsSearchUtil(Config.ES_CONFIG)
hosts=Config.ES_CONFIG['hosts'],
basic_auth=Config.ES_CONFIG['basic_auth'],
verify_certs=False
)
# 定义mapping结构 # 调用重建mapping方法
mapping = { if search_util.rebuild_mapping():
"mappings": { print("重建mapping操作完成成功")
"properties": { else:
"embedding": { print("重建mapping操作失败")
"type": "dense_vector",
"dims": 1024, # embedding维度为1024
"index": True,
"similarity": "l2_norm" # 使用L2距离
},
"user_input": {"type": "text"},
"tags": {
"type": "object",
"properties": {
"tags": {"type": "keyword"},
"full_content": {"type": "text"}
}
}
}
}
}
# 创建索引
index_name = Config.ES_CONFIG['index_name']
if es.indices.exists(index=index_name):
es.indices.delete(index=index_name)
print(f"删除已存在的索引 '{index_name}'")
es.indices.create(index=index_name, body=mapping)
print(f"索引 '{index_name}' 创建成功mapping结构已设置。")

View File

@@ -11,10 +11,16 @@ from langchain_openai import OpenAIEmbeddings
from pydantic import SecretStr from pydantic import SecretStr
from Config import Config from Config import Config
# 禁用HTTPS相关警告
def disableWarning():
# 抑制HTTPS相关警告 # 抑制HTTPS相关警告
warnings.filterwarnings('ignore', message='Connecting to .* using TLS with verify_certs=False is insecure') warnings.filterwarnings('ignore', message='Connecting to .* using TLS with verify_certs=False is insecure')
warnings.filterwarnings('ignore', message='Unverified HTTPS request is being made to host') warnings.filterwarnings('ignore', message='Unverified HTTPS request is being made to host')
# 初始化配置
disableWarning()
# 初始化日志 # 初始化日志
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
logger.setLevel(logging.INFO) logger.setLevel(logging.INFO)
@@ -38,6 +44,59 @@ class EsSearchUtil:
self.index_name = es_config['index_name'] self.index_name = es_config['index_name']
logger.info(f"EsSearchUtil初始化成功索引名称: {self.index_name}") logger.info(f"EsSearchUtil初始化成功索引名称: {self.index_name}")
def rebuild_mapping(self):
"""
重建Elasticsearch索引和mapping结构
返回:
bool: 操作是否成功
"""
try:
# 从连接池获取连接
conn = self.es_pool.get_connection()
# 定义mapping结构
mapping = {
"mappings": {
"properties": {
"embedding": {
"type": "dense_vector",
"dims": 1024, # embedding维度为1024
"index": True,
"similarity": "l2_norm" # 使用L2距离
},
"user_input": {"type": "text"},
"tags": {
"type": "object",
"properties": {
"tags": {"type": "keyword"},
"full_content": {"type": "text"}
}
}
}
}
}
# 检查索引是否存在,存在则删除
if conn.indices.exists(index=self.index_name):
conn.indices.delete(index=self.index_name)
logger.info(f"删除已存在的索引 '{self.index_name}'")
print(f"删除已存在的索引 '{self.index_name}'")
# 创建索引和mapping
conn.indices.create(index=self.index_name, body=mapping)
logger.info(f"索引 '{self.index_name}' 创建成功mapping结构已设置")
print(f"索引 '{self.index_name}' 创建成功mapping结构已设置。")
return True
except Exception as e:
logger.error(f"重建mapping失败: {str(e)}")
print(f"重建mapping失败: {e}")
return False
finally:
# 释放连接回连接池
self.es_pool.release_connection(conn)
def text_search(self, query, size=10): def text_search(self, query, size=10):
# 从连接池获取连接 # 从连接池获取连接
conn = self.es_pool.get_connection() conn = self.es_pool.get_connection()