from pydantic import Field from pydantic_settings import BaseSettings, SettingsConfigDict from typing import List class ElasticsearchConfig(BaseSettings): """Elasticsearch 配置""" hosts: List[str] = Field(default_factory=list) username: str = "elastic" password: str = "" index_name: str = "meta_articles_v1" cert_path: str = Field( default="app/core/config/cert/es_certs.crt", description="SSL 证书路径" ) cert_content: str = Field( default="", description="SSL 证书内容 (base64 编码)", ) # ES mappings 和 settings(从 elastic_search_mappings.py 迁移) mappings: dict = Field(default_factory=dict) settings: dict = Field(default_factory=dict) model_config = SettingsConfigDict( env_prefix="ES_", env_file=".env", case_sensitive=False, extra="ignore" )