2

我正在尝试使用 multi get 返回具有源过滤的强类型对象集合,虽然我已经能够使用 ElasticSearch 的 JSON API 创建我想要的结果,但我不确定如何将其转换为 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()此外,如果存在基于表达式(类型安全)的调用,最好使用签名 。

4

1 回答 1

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");
于 2014-08-04T20:17:39.993 回答