Symfony 3.4.11下FOS-ElasticSearch 5.0.3配置选项未识别报错求助
搞定FOSElasticaBundle配置报错问题
嘿,我来帮你解决这个Symfony 3.4 + FOSElastica 5.0.3的配置报错问题!你遇到的“无法识别选项”错误,核心是FOSElasticaBundle 5.x版本的配置规则和旧版本差异很大,再加上你的配置文件存在缩进层级错误,才导致Symfony认不出这些参数。
问题出在哪?
1. 配置层级完全错误
你把index_analyzer、search_analyzer直接放在technical_assistance类型节点下,还把mappings和persistence搞成了平级——这在5.x版本里完全不兼容:
mappings必须是technical_assistance的直接子节点,不能和persistence同级- 分析器(
index_analyzer/search_analyzer)不能直接写在类型节点下,得先在索引的settings.analysis里定义好,再在字段映射里引用
2. 分析器配置方式变更
FOSElastica 5.x把分析器的定义统一移到了索引的settings节点下,不再支持类型级别的直接配置。你原来的写法是旧版本(比如3.x)的语法,5.x已经不再认可。
修正后的完整配置示例
我给你调整好了配置,你可以直接参考使用:
fos_elastica: indexes: optro: # 先在这里定义分析器 settings: analysis: analyzer: my_nGram_index_analyzer: type: custom tokenizer: standard filter: [lowercase, my_nGram_filter] my_nGram_search_analyzer: type: custom tokenizer: standard filter: [lowercase] filter: my_nGram_filter: type: nGram min_gram: 2 max_gram: 15 types: technical_assistance: # mappings要缩进在这里,作为类型的子节点 mappings: subject: boost: 2 analyzer: my_nGram_index_analyzer # 引用已定义的分析器 search_analyzer: my_nGram_search_analyzer description: analyzer: my_nGram_index_analyzer search_analyzer: my_nGram_search_analyzer equipment_reference: ~ filename: ~ trackingNumber: ~ requester: type: object properties: first_name: ~ last_name: ~ section: type: object properties: name: ~ translatedNames: ~ messages: type: object properties: content: boost: 0.5 analyzer: my_nGram_index_analyzer search_analyzer: my_nGram_search_analyzer filename: ~ # persistence和mappings同级,这个是正确的 persistence: driver: orm model: Optro\HelpdeskBundle\Entity\TechnicalAssistance provider: ~ listener: ~ finder: service: optro.finder.raw.technical_assistance
关键修正点总结
- 将分析器定义移到
optro索引的settings.analysis节点下,遵循“先定义再引用”的规则 - 修正
mappings的缩进,让它回到technical_assistance类型的子节点位置 - 把原来的
index_analyzer替换为字段内的analyzer,search_analyzer保留但需引用已定义的分析器 - 确保所有缩进使用2个空格(YAML对缩进极度敏感,绝对不能用制表符)
小提示
如果是从旧版本升级过来的,一定要查看对应5.x版本的FOSElasticaBundle文档,很多配置结构都有较大改动,别再沿用旧版本的写法啦!
内容的提问来源于stack exchange,提问作者thuiban
相关产品推荐
相关产品推荐

