elasticsearch.py 3.5 KB

1234567891011121314151617181920212223242526272829303132
  1. from pydantic import Field
  2. from pydantic_settings import BaseSettings, SettingsConfigDict
  3. from typing import List
  4. class ElasticsearchConfig(BaseSettings):
  5. """Elasticsearch 配置"""
  6. hosts: List[str] = Field(
  7. default_factory=lambda: [
  8. "https://192.168.205.85:9200",
  9. "https://192.168.205.85:9300",
  10. ]
  11. )
  12. username: str = "elastic"
  13. password: str = "nkvvASQuQ0XUGRq5OLvm"
  14. index_name: str = "meta_articles_v1"
  15. cert_path: str = Field(
  16. default="app/core/config/cert/es_certs.crt", description="SSL 证书路径"
  17. )
  18. cert_content: str = Field(
  19. default="LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZhVENDQTFHZ0F3SUJBZ0lVV0hIOVQ4UFZmaVN5dlQ2UzZOckFROWlTTGVFd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1BERTZNRGdHQTFVRUF4TXhSV3hoYzNScFkzTmxZWEpqYUNCelpXTjFjbWwwZVNCaGRYUnZMV052Ym1acApaM1Z5WVhScGIyNGdTRlJVVUNCRFFUQWVGdzB5TlRBM01EY3dOekl3TlRSYUZ3MHlPREEzTURZd056SXdOVFJhCk1Ed3hPakE0QmdOVkJBTVRNVVZzWVhOMGFXTnpaV0Z5WTJnZ2MyVmpkWEpwZEhrZ1lYVjBieTFqYjI1bWFXZDEKY21GMGFXOXVJRWhVVkZBZ1EwRXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDRHdBd2dnSUtBb0lDQVFDYgpZOEU2OCs3UytoR0tRWDZ2aHlPeHVDZTNReUJIWWxzeGlTcUdoaStXRng5NTN1NFNFTXFyYnFpeWcyUXF1QjkvCnluaktvM1R2aG4wT1BqdUpSeXR0ZUtuOU9aa1ZoVVQxRDVQNlBGbzBqOHgxTElKWm01NTFYUkNuUVVaOGpDMEMKUkVIeS9Kb0tkVDRZU0NSSXVYVlRNNWlNNjZ2UTF0NUR1NHNiNzBtVHlndGMyRHlYd2dFNExrVm5ySGN3cjJCWgozL082OVd2RjdaZDdXUDkzeUVmVXNMc0FBUVN0YUNZTWVZeWFZNUs4VXdJVmNGeVdLSjlsbkRHYlI5S211WGI5CmlwV3FHdzZhQVlobVNzNWdMKzZ4SjVkQnBnTU9xb0JUdlpwTm5pTEEvcGhrZWxxOVcybkFoQkxGcFJHUm9mOEsKNWlLd2pBTjhnbkJYZVNWa2xCb0wyM1FENXpmb1Zqeis1ZWFYV080cVArOTBqYndmK3ZFZy9kdW5jRFJPTkd0awpUUWQwVnI5TmVPM0F5ZThQWnNtbWhLQWFjaWFQV1l5UU8zMG9tVXE5a1BzU1V6WlB1NGsrQ1liOHF3VlFDSHBuClphMTlOa3ZFUlE4aENRa3MwOC9seTVxRE0rNWxCeEpRRlFqaGp0elNEUS95YmJhck1tZ2FCeHBDZXhpa3NSbVAKQ1FxVkxXNklhTHhVR0VrSUpxWFJ4OG5tS1VmSzQzdlRCaXRPQkZ0NVVjS29iNitpa1pMcnFaNnhMWS9qa2xFOApaMXd0OUk4WmRRM0wzWDlFT1JnbVErNEtJdS9KUWZCZGZBWXRMYVM2TVlXaGlaU2FLYUloZ2ZYaVpRVE85WXVXCktySTVnK2QyWXUyQllnSWlvTEtvOUxGV0sxZVRHMmdOQUdVSS8rcnFzd0lEQVFBQm8yTXdZVEFkQmdOVkhRNEUKRmdRVWFiMmtBdFBsSkhMaXJRdmJUaHZJd0o3aGJMd3dId1lEVlIwakJCZ3dGb0FVYWIya0F0UGxKSExpclF2YgpUaHZJd0o3aGJMd3dEd1lEVlIwVEFRSC9CQVV3QXdFQi96QU9CZ05WSFE4QkFmOEVCQU1DQVFZd0RRWUpLb1pJCmh2Y05BUUVMQlFBRGdnSUJBRit3SjU5OEtyZmFpNUJyNlZxMFoxamowSnNVOEtpajR0OUQrODlRUGdJODUvTXYKendqOHhSZ3h4OVJpbktZZG56RkpXckQ5QklURzJsM0QwemNKaFhmWVVwcTVITFArYzN6TXdFTUd6VExiZ2k3MApjcFlxa1RKK2cvQWg1V1JZWlJISklNRjZCVks2aXpDT08wSjQ5ZVlDNkFPTk54RzJIZWVVdkVMNGNObnhwdzhUCk5VZTd2MEZYZTJpUExlRTcxM2g5OXJheTBsQmdJNko5UVpxYy9vRU00N2dIeStCeWZXQ3Y2WXc5cUxscHJwcFAKdGFIejJWV25DQUFDREx6YkRuWWhlbVFEamk4NnlyVVRFZENUOGF0MWpBd0hTaXhna204OG5FQmd4UEhEdXE4dAp0aG1pUzZkRUx2WFZVYnllV083QS83elZkZTBLbmR4ZTAwM091WWNYOUkySVg3YUlwQzhzVy95WSthbFJoa2xxCnQ5dkY2ZzFxdnNONjl4WGZXNXlJNUczMVRZTVV3LzNuZzBhVkpmUkZhWGtFVjJTV0VaRCs0c1dvWUMvR1U3a0sKemxmYUYyMmpUZXVsNXFDS2tOMWsraThLMmxoZUVFM1pCQzM1OFcwUnl2c3JEd3RYT3JhM1ZDcFo3cXJlejhPQQovSGVZNmlJU1pRN2cwczIwOUtqcU9QcVZHY0k4QjBwNktNaDAwQWVXaXNVNkUvd3kxTE5UeGtmMklTOWI4OG42CmEzcmowVEN5Y3doS09QVFBCNXB3bGZiWk5JMDB0R1RGanFxaTA3U0xxTzlaeXBzVmt5UjMyRzE2SlBKems4WncKa25nQlp0Nnk5THRDTVJWYnlEdUlETnErZmp0RGpneE1JOWJRWHR2ZTRiT3VxOGNaemNNakM2a2h6L0phCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0=",
  20. description="SSL 证书内容 (base64 编码)",
  21. )
  22. # ES mappings 和 settings(从 elastic_search_mappings.py 迁移)
  23. mappings: dict = Field(default_factory=dict)
  24. settings: dict = Field(default_factory=dict)
  25. model_config = SettingsConfigDict(
  26. env_prefix="ES_", env_file=".env", case_sensitive=False, extra="ignore"
  27. )