【问题标题】:ElasticSearch NEST MultiGet with Source Filtering带有源过滤的 ElasticSearch NEST MultiGet
【发布时间】:2014-08-05 05:12:45
【问题描述】:

我正在尝试使用 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() 调用使用基于表达式(类型安全)的签名(如果存在)。

【问题讨论】:

    标签: elasticsearch nest elasticsearch-net


    【解决方案1】:

    看起来这是一个错误。我刚刚在 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");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2016-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-06
      • 1970-01-01
      相关资源
      最近更新 更多