1 在 Elasticsearch 7.17.0 中,可以使用以下 Nest 代码来在多个字段上进行高亮: 2 3 ```csharp 4 var highlightFields = new HighlightFieldDescriptor<MyDocument>[] 5 { 6 h => h.Field(f => f.Field1), 7 h => h.Field(f => f.Field2) 8 }; 9 10 var searchResponse = client.Search<MyDocument>(s => s 11 .Index("myindex") 12 .Query(q => q 13 .Match(m => m 14 .Field(f => f.Field1) 15 .Query("myquery") 16 ) 17 ) 18 .Highlight(h => h 19 .PreTags("<em>") 20 .PostTags("</em>") 21 .Fields(highlightFields) 22 ) 23 ); 24 ``` 25 26 上述代码同时在 `Field1` 和 `Field2` 字段上对包含 "myquery" 的文本进行高亮显示,并使用 `<em>` 和 `</em>` 作为高亮标记。 27 28 在这里,我们使用 `HighlightFieldDescriptor` 类型的数组来指定要在哪些字段上高亮显示。在高亮字段的 `.Field()` 方法中,我们可以指定每个字段的名称或 lambda 表达式。然后在 `.Highlight()` 方法中,我们指定了包含预/后缀标记、字段数组等选项,以便进行高亮。 29 30 请注意,使用高亮功能会对 Elasticsearch 查询的性能产生一定的影响,因为它需要对匹配文本进行额外的处理。因此,在使用高亮功能之前,请确保你的 Elasticsearch 集群已正确配置,以确保高效地执行查询操作。