From db1c1e2ee4599ad311613de0a8737957ad7c9510 Mon Sep 17 00:00:00 2001 From: hzg0601 Date: Mon, 11 Dec 2023 10:39:59 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E5=A4=9A=E6=AC=A1=E8=B0=83?= =?UTF-8?q?=E7=94=A8es=E5=88=9B=E5=BB=BA=E7=B4=A2=E5=BC=95=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../kb_service/es_kb_service.py | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/server/knowledge_base/kb_service/es_kb_service.py b/server/knowledge_base/kb_service/es_kb_service.py index 200de5f7..dec2a941 100644 --- a/server/knowledge_base/kb_service/es_kb_service.py +++ b/server/knowledge_base/kb_service/es_kb_service.py @@ -1,10 +1,3 @@ -#!/user/bin/env python3 -""" -File_Name: es_kb_service.py -Author: TangGuoLiang -Email: 896165277@qq.com -Created: 2023-09-05 -""" from typing import List import os import shutil @@ -14,7 +7,7 @@ from langchain.vectorstores.elasticsearch import ElasticsearchStore from configs import KB_ROOT_PATH, EMBEDDING_MODEL, EMBEDDING_DEVICE, CACHED_VS_NUM from server.knowledge_base.kb_service.base import KBService, SupportedVSType from server.utils import load_local_embeddings -from elasticsearch import Elasticsearch +from elasticsearch import Elasticsearch,BadRequestError from configs import logger from configs import kbs_config @@ -27,6 +20,7 @@ class ESKBService(KBService): self.PORT = kbs_config[self.vs_type()]['port'] self.user = kbs_config[self.vs_type()].get("user",'') self.password = kbs_config[self.vs_type()].get("password",'') + self.password = kbs_config[self.vs_type()].get("dims_length",None) self.embeddings_model = load_local_embeddings(self.embed_model, EMBEDDING_DEVICE) try: # ES python客户端连接(仅连接) @@ -36,11 +30,18 @@ class ESKBService(KBService): else: logger.warning("ES未配置用户名和密码") self.es_client_python = Elasticsearch(f"http://{self.IP}:{self.PORT}") - self.es_client_python.indices.create(index=self.index_name) except ConnectionError: logger.error("连接到 Elasticsearch 失败!") + raise ConnectionError except Exception as e: logger.error(f"Error 发生 : {e}") + raise e + try: + # 首先尝试通过es_client_python创建 + self.es_client_python.indices.create(index=self.index_name) + except BadRequestError as e: + logger.error("创建索引失败,重新") + logger.error(e) try: # langchain ES 连接、创建索引 @@ -64,10 +65,24 @@ class ESKBService(KBService): embedding=self.embeddings_model, ) except ConnectionError: - print("### 连接到 Elasticsearch 失败!") - logger.error("### 连接到 Elasticsearch 失败!") + print("### 初始化 Elasticsearch 失败!") + logger.error("### 初始化 Elasticsearch 失败!") + raise ConnectionError except Exception as e: logger.error(f"Error 发生 : {e}") + raise e + try: + # 尝试通过db_init创建索引 + self.db_init._create_index_if_not_exists( + index_name=self.index_name, + dims_length=self.dims_length + ) + except Exception as e: + logger.error("创建索引失败...") + logger.error(e) + # raise e + + @staticmethod def get_kb_path(knowledge_base_name: str):