我已经使用Nest成功获得了结果和重点,但如果我包含两个要搜索高亮的字段,它只使用构造elasticsearch查询的最后一个字段。例如以下
.Query(qry => qry
.QueryString(qs => qs
.Query(qString)
)
)
.Highlight(h => h
.PreTags("<b>")
.PostTags("</b>")
.OnFields(f => f
.OnField("Title")
.OnField("Summary")
)
)
表示我只获得从“摘要”字段返回的高亮显示。如果我使用等效查询直接查询elasticsearch,我可以从两个字段中检索突出显示。 e.g。
{
"query": {
"query_string": {
"query": "apple"
}
},
"highlight": {
"pre_tags": ["<b>"],
"post_tags": ["</b>"],
"fields": {
"Title": {},
"Summary": {}
}
}
}
是否可以使用Nest执行此操作?我做错了吗?
答案 0 :(得分:8)
每个突出显示的字段都需要单独的“.OnField”。
.Highlight(h => h
.PreTags("<b>")
.PostTags("</b>")
.OnFields(
f => f.OnField("Title"),
f => f.OnField("Summary")
)
)
请参阅另一个示例here。
答案 1 :(得分:0)
也可以突出显示所有查询的字段。
.Highlight(h => h
.Fields(f => f.Field("*"))