调用OpenSearch自动补全遇parse_exception:缺失suggestion对象
问题分析与解决方案
错误原因
你混淆了OpenSearch Java客户端中的Suggest和Suggester类,同时FieldSuggester的构建写法冗余,导致生成的请求结构不符合OpenSearch的解析要求,触发parse_exception: missing suggestion object异常。
修正代码
1. 修正createSuggester方法(返回类型改为Suggest)
public Suggest createSuggester(final String query) { return Suggest.of(s -> s.suggesters("autocomplete", FieldSuggester.of(f -> f.prefix(query) .completion(c -> c.field("suggestions")) )) ); }
2. 调用代码保持不变
final SearchRequest request = SearchRequest.of(s -> s.index(searchIndex()).suggest(factory.createSuggester(query)));
关键说明
Suggest类对应DSL中顶层的suggest对象,负责包裹所有自动补全请求条目;FieldSuggester对应单个补全配置(示例中的autocomplete),直接包含prefix和completion属性,与你提供的正常DSL结构完全匹配;- 之前错误地使用
Suggester类作为请求参数,而非Suggest,导致OpenSearch无法识别正确的suggestion结构,从而抛出异常。
内容的提问来源于stack exchange,提问作者pbh
相关产品推荐
相关产品推荐

