我使用以下代码搜索articleid和控制字段。它将保存2个字段值。但我无法访问这两个字段值。 在这里搜索<>是动态的。
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"))));
你能解释一下如何获得这两个字段值..
答案 0 :(得分:1)
由于Elasticsearch 1.0字段总是在点击时返回Dictionary<string, object[]>
以便在NEST中访问这些字段,因此您可以使用:
foreach (var doc in queryResults.FieldSelections)
{
var articleIds = doc.FieldValues<int[]>("articleid");
}
有关语法的详细信息,请参阅this PR。
答案 1 :(得分:0)
搜索响应(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的更多信息,请参阅此单元测试here