# Unified Configuration for Multi-Tenant Search Engine # 统一配置文件,所有租户共用一套索引配置 # 注意:此配置不包含MySQL相关配置,只包含ES搜索相关配置 # Elasticsearch Index es_index_name: "search_products" # ES Index Settings es_settings: number_of_shards: 1 number_of_replicas: 0 refresh_interval: "30s" # Field Definitions (SPU级别,只包含对搜索有帮助的字段) fields: # 租户隔离字段(必需) - name: "tenant_id" type: "KEYWORD" required: true index: true store: true return_in_source: true # 商品标识字段 - name: "spu_id" type: "KEYWORD" required: true index: true store: true return_in_source: true # 文本相关性相关字段(中英文双语) - name: "title_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 3.0 index: true store: true return_in_source: true - name: "brief_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 1.5 index: true store: true return_in_source: true - name: "description_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 1.0 index: true store: true return_in_source: true - name: "vendor_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 1.5 index: true store: true return_in_source: true keyword_subfield: true keyword_normalizer: "lowercase" - name: "title_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 3.0 index: true store: true return_in_source: true - name: "brief_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 1.5 index: true store: true return_in_source: true - name: "description_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 1.0 index: true store: true return_in_source: true - name: "vendor_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 1.5 index: true store: true return_in_source: true keyword_subfield: true keyword_normalizer: "lowercase" - name: "tags" type: "KEYWORD" index: true store: true return_in_source: true # 价格字段(扁平化) - name: "min_price" type: "FLOAT" index: true store: true return_in_source: true - name: "max_price" type: "FLOAT" index: true store: true return_in_source: true - name: "compare_at_price" type: "FLOAT" index: true store: true return_in_source: true - name: "sku_prices" type: "FLOAT" index: true store: true return_in_source: true - name: "sku_weights" type: "LONG" index: true store: true return_in_source: true - name: "sku_weight_units" type: "KEYWORD" index: true store: true return_in_source: true - name: "total_inventory" type: "LONG" index: true store: true return_in_source: true # 图片字段(用于显示,不参与搜索) - name: "image_url" type: "KEYWORD" index: false store: true return_in_source: true # 语义向量 - name: "title_embedding" type: "TEXT_EMBEDDING" embedding_dims: 1024 embedding_similarity: "dot_product" index: true store: false return_in_source: false # 嵌入向量通常不需要在结果中返回 - name: "image_embedding" type: "IMAGE_EMBEDDING" embedding_dims: 1024 embedding_similarity: "dot_product" nested: true index: true store: false return_in_source: false # 分类相关字段 - name: "category_path_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 1.5 index: true store: true return_in_source: true - name: "category_path_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 1.5 index: true store: true return_in_source: true - name: "category_name_zh" type: "TEXT" analyzer: "hanlp_index" search_analyzer: "hanlp_standard" boost: 1.5 index: true store: true return_in_source: true - name: "category_name_en" type: "TEXT" analyzer: "english" search_analyzer: "english" boost: 1.5 index: true store: true return_in_source: true - name: "category_id" type: "KEYWORD" index: true store: true return_in_source: true - name: "category_name" type: "KEYWORD" index: true store: true return_in_source: true - name: "category_level" type: "INT" index: true store: true return_in_source: true - name: "category1_name" type: "KEYWORD" index: true store: true return_in_source: true - name: "category2_name" type: "KEYWORD" index: true store: true return_in_source: true - name: "category3_name" type: "KEYWORD" index: true store: true return_in_source: true # SKU款式、子sku属性 - name: "specifications" type: "JSON" nested: true return_in_source: true nested_properties: sku_id: type: "keyword" index: true store: true name: type: "keyword" index: true store: true value: type: "keyword" index: true store: true - name: "option1_name" type: "KEYWORD" index: true store: true return_in_source: true - name: "option2_name" type: "KEYWORD" index: true store: true return_in_source: true - name: "option3_name" type: "KEYWORD" index: true store: true return_in_source: true # 时间字段 - name: "create_time" type: "DATE" index: true store: true return_in_source: true - name: "update_time" type: "DATE" index: true store: true return_in_source: true # 嵌套skus字段 - name: "skus" type: "JSON" nested: true return_in_source: true nested_properties: sku_id: type: "keyword" index: true store: true price: type: "float" index: true store: true compare_at_price: type: "float" index: true store: true sku_code: type: "keyword" index: true store: true stock: type: "long" index: true store: true weight: type: "float" index: true store: true weight_unit: type: "keyword" index: true store: true option1_value: type: "keyword" index: true store: true option2_value: type: "keyword" index: true store: true option3_value: type: "keyword" index: true store: true image_src: type: "keyword" index: false store: true # Index Structure (Query Domains) indexes: - name: "default" label: "默认索引" fields: - "title_zh" - "brief_zh" - "description_zh" - "vendor_zh" - "tags" - "category_path_zh" - "category_name_zh" analyzer: "chinese_ecommerce" boost: 1.0 - name: "title" label: "标题索引" fields: - "title_zh" analyzer: "chinese_ecommerce" boost: 2.0 - name: "vendor" label: "品牌索引" fields: - "vendor_zh" analyzer: "chinese_ecommerce" boost: 1.5 - name: "category" label: "类目索引" fields: - "category_path_zh" - "category_name_zh" analyzer: "chinese_ecommerce" boost: 1.5 - name: "tags" label: "标签索引" fields: - "tags" analyzer: "chinese_ecommerce" boost: 1.0 # Query Configuration query_config: supported_languages: - "zh" - "en" default_language: "zh" enable_translation: true enable_text_embedding: true enable_query_rewrite: true # Embedding field names (if not set, will auto-detect from fields) text_embedding_field: "title_embedding" # Field name for text embeddings image_embedding_field: null # Field name for image embeddings (if not set, will auto-detect) # Translation API (DeepL) translation_service: "deepl" translation_api_key: null # Set via environment variable # translation_glossary_id: null # Optional: DeepL glossary ID for custom terminology (e.g., "车" -> "car") # translation_context: "e-commerce product search" # Context hint for better translation disambiguation # Ranking Configuration ranking: expression: "bm25() + 0.2*text_embedding_relevance()" description: "BM25 text relevance combined with semantic embedding similarity" # Function Score配置(ES层打分规则) function_score: score_mode: "sum" boost_mode: "multiply" functions: [] # Rerank配置(本地重排,当前禁用) rerank: enabled: false expression: "" description: "Local reranking (disabled, use ES function_score instead)" # SPU配置(已启用,使用嵌套skus) spu_config: enabled: true spu_field: "spu_id" inner_hits_size: 10