从Elasticsearch.Net 7.17迁移至8.x客户端时高亮器实现问题
Elasticsearch 8.x 客户端高亮器 Fields 语法迁移说明
在Elastic.Clients.Elasticsearch 8.x版本中,高亮器的Fields配置语法和7.17的Elasticsearch.Net有明显区别,不再使用链式的.Field()调用,而是通过字典式的Add方法来配置。
对应你7.17版本的代码,8.x的写法如下:
.Highlight(h => h .PreTags("<strong>") .PostTags("</strong>") .Fields(fs => fs .Add(p => p.searchPhrase, f => f) // 无额外字段高亮配置时,用f=>f启用默认设置 ) )
如果需要给指定字段配置额外的高亮参数(比如统一高亮类型、片段长度),可以在Add的第二个参数里扩展:
.Highlight(h => h .PreTags("<strong>") .PostTags("</strong>") .Fields(fs => fs .Add(p => p.searchPhrase, f => f .Type(HighlighterType.Unified) .FragmentSize(150) ) ) )
核心变化是8.x的HighlightFields本质是一个键值对集合,每个键是要高亮的字段,值是该字段的高亮配置项,所以必须用Add方法来添加字段条目,替代7.x中直接链式调用.Field()的写法。
内容的提问来源于stack exchange,提问作者DaveSav
相关产品推荐
相关产品推荐

