ElasticSearch NEST MultiGet与源过滤

时间:2014-08-04 18:31:40

标签: elasticsearch nest elasticsearch-net

我试图利用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()调用,最好使用签名。

1 个答案:

答案 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");