繁体   English   中英

使用NEST显示弹性搜索匹配值

[英]Display elastic search hits values using NEST

我正在使用以下代码搜索articleid和控件字段。 它将保存2个字段的值。 但是我无法访问这两个字段的值。 在这里search <>是动态的。

  var searchrange = _client.Search<dynamic>(s =>  s
               .Indices("kb_v2").Types("kb")
               .From(0).Size(10)
               .Fields("articleid","control")
               .Query(q => q
                     .Range(r =>r
                         .OnField("articleid")
                         .Greater("2")
                         .Lower("5"))));

您能解释一下如何获取这两个字段的值吗?

由于Elasticsearch 1.0字段始终以Dictionary<string, object[]>返回,因此可以在NEST中访问它们,因此可以使用:

foreach (var doc in queryResults.FieldSelections)
{
    var articleIds = doc.FieldValues<int[]>("articleid");
}

有关语法的更多详细信息,请参见此PR

搜索响应( ISearchResponse类型)具有FieldSelections属性,该属性保存结果和详细信息。 使用较旧的Nest版本,必须遍历Hits属性才能找到每个字段的值。

"hits": [
         {
            "_index": "kb_v2",
            "_type": "kb",
            "_id": "3565178",
            "_score": 1,
            "fields": {
               "articleid": [
                  "3"
               ]
            }
         },
         {
            "_index": "kb_v2",
            "_type": "kb",
            "_id": "3932480",
            "_score": 1,
            "fields": {
               "articleid": [
                  "4"
               ]
            }
         }]

更多关于如何使用ElastichSearch.net客户端FieldSelections在这个单元测试中提到这里

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM