突出显示所有字段Nest ElasticSearch

jam*_*hid 2 c# elasticsearch nest

大家
我与C#elasticsearch的巢司机工作.在我的项目中,我没有任何文档映射,如果我想突出显示匹配的字段,我应该在我的查询中使用这个Json部分,它突出显示所有字段:

"highlight":{
    "fields":{
      "*":{}
    }
  }
Run Code Online (Sandbox Code Playgroud)

但我想用巢做.我用这个代码:

 client.Search<dynamic>(s => s
       .Index('my index name')
       .Type('my doc type name')
       .From(page*PageSize)
       .Size(PageSize)
       .Query(q => q
              .QueryString(qs => qs.Query('my query')))
       .Highlight(h => h
              .OnFields(f => f
                    .OnAll()
                    .PreTags("<b style='color:black'>")
                    .PostTags("</b>")
       )));
Run Code Online (Sandbox Code Playgroud)

它不适合我,返回结果包含命中,但不包含任何突出显示:(

Rob*_*Rob 6

我猜你在找

client.Search<dynamic>(s => s
   .Index('my index name')
   .Type('my doc type name')
   .From(page*PageSize)
   .Size(PageSize)
   .Query(q => q
          .QueryString(qs => qs.Query('my query')))
   .Highlight(h => h
          .OnFields(f => f
                .OnField("*")
                .PreTags("<b style='color:black'>")
                .PostTags("</b>")
   )));
Run Code Online (Sandbox Code Playgroud)

因为.OnAll()手段.OnField("_all").

看一看

UPDATE:对象初始化语法(NEST 5.x)

var searchRequest = new SearchRequest
{
    Query = ..
    Highlight = new Highlight
    {
        PostTags = new[] {"<a>"},
        PreTags = new[] {"</a>"},
        Fields = new FluentDictionary<Field, IHighlightField>().Add("*", new HighlightField())
    }
};
Run Code Online (Sandbox Code Playgroud)