NEST(elasticsearch)在多个领域突出显示

时间:2013-08-21 15:22:07

标签: elasticsearch nest

我已经使用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执行此操作?我做错了吗?

2 个答案:

答案 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("*"))