当我尝试使用NEST文档中的一个非常简单的MultiSearch运算符示例时:
var request = new MultiSearchRequest
{
Operations = new Dictionary<string, ISearchRequest>
{
{ "esproj", new SearchRequest
{
Query = new QueryContainer(new MatchAllQuery())
}
},
{ "people", new SearchRequest
{
Query = new QueryContainer(new MatchAllQuery())
}
}
}
};
var result = _client.MultiSearch(request);
然后我有以下错误:
System.ArgumentNullException未由用户代码处理HResult = -2147467261 Source = mscorlib StackTrace:在Nest.Resolvers.Converters.MultiSearchConverter.ReadJson中的System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type [] methodInstantiation)中(JsonReader reader,Type objectType,Object existingValue,JsonSerializer序列化程序)w C:\ code \ elasticsearch-net \ src \ Nest \ Resolvers \ Converters \ MultiSearchConverter.cs:Nest.Resolvers.Converters.MultiSearchConverter.ReadJson中的第101行(JsonReader reader,Type objectType,Object existingValue,JsonSerializer)序列化程序)w C:\ code \ elasticsearch-net \ src \ Nest \ Resolvers \ Converters \ MultiSearchConverter.cs:Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter转换器,JsonReader reader,Type objectType,Object existingValue)中的第78行Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader,Type objectType,Boolean checkAdditionalContent)
但只有当我使用对象初始化语法时 - 当我使用Fluent语法时:
var result2 = _client.MultiSearch(ms => ms
.Search<MyClass>("esproj", s => s.MatchAll())
.Search<MyClass>("people", s => s.MatchAll())
);
一切都好(我得到了结果) . 我的Nest客户端版本是1.4.2 . 我究竟做错了什么?
1 回答
这绝对是个错误 . 刚打开https://github.com/elastic/elasticsearch-net/issues/127并将在下一个版本中解决此问题 .