我试图利用multi get来返回带有源过滤的强类型对象的集合,虽然我已经能够使用Jlastic API为ElasticSearch创建我想要的结果,但我不知道如何翻译它进入NEST 1.0 API。
这是我想要生成的查询;它工作正常:
GET index/thing/_mget
{
"docs" : [
{
"_id": "00000000-0000-0000-0000-000000000030",
"_source": ["id", "name"]
},
{
"_id": "00000000-0000-0000-0000-000000000321",
"_source": ["id", "name"]
}
/* .... */
]
}
这是我一直在玩的东西,但它实际上并没有过滤来源;相反,它返回完整的对象:
client.MultiGet(s => s
.GetMany<Thing>(ids)
.SourceEnabled("id", "name"))
任何帮助将不胜感激。此外,如果存在基于表达式(类型安全)的SourceEnabled()
调用,最好使用签名。
答案 0 :(得分:3)
看起来这是一个错误。我刚刚在GitHub上打开issue #849来解决这个问题。
与此同时,指定字段具有类似的用途,可能是您的解决方法:
var result = client.MultiGet(s => s
.GetMany<Thing>(ids, (d, i) => d.Fields("id", "name"))
);
var fieldSelection = result.GetFieldSelection<Person>(1);
var fields = fieldSelection.FieldValues<string>("name");