2

マルチ 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 に答える