【问题标题】:Elasticsearch NEST MultiSearch ArgumentNullExceptionElasticsearch NEST MultiSearch ArgumentNullException
【发布时间】:2015-05-14 21:03:50
【问题描述】:

当我尝试使用 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 未被用户代码处理 H结果=-2147467261 源=mscorlib 堆栈跟踪: 在 System.Reflection.RuntimeMethodInfo.MakeGenericMethod(Type[] methodInstantiation) 在 Nest.Resolvers.Converters.MultiSearchConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) w C:\code\elasticsearch-net\src\Nest\Resolvers\Converters\MultiSearchConverter.cs:row 101 在 Nest.Resolvers.Converters.MultiSearchConverter.ReadJson(JsonReader reader, Type objectType, Object existingValue, JsonSerializer serializer) w C:\code\elasticsearch-net\src\Nest\Resolvers\Converters\MultiSearchConverter.cs:row 78 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.DeserializeConvertable(JsonConverter 转换器,JsonReader 阅读器,类型 objectType,对象现有值) 在 Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent)

但只有当我使用 Object Initializer Syntax - 当我使用 Fluent Syntax 时:

var result2 = _client.MultiSearch(ms => ms
                .Search<MyClass>("esproj", s => s.MatchAll())
                .Search<MyClass>("people", s => s.MatchAll())
            );

一切正常(我得到了结果)。我的 Nest 客户端版本是 1.4.2。 我做错了什么?

【问题讨论】:

  • 我从未尝试过 MultiSearchRequest 方法。我会坚持使用流利的方法,这将变得更加普遍,您会发现大多数人这样做的方式是什么。

标签: c# elasticsearch nest


【解决方案1】:

这绝对是一个错误。刚刚打开 https://github.com/elastic/elasticsearch-net/issues/127 并将在下一个版本中解决这个问题。

【讨论】:

    猜你喜欢
    • 2020-07-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-11
    • 2015-06-16
    • 2013-07-19
    • 2015-06-05
    • 2015-12-18
    相关资源
    最近更新 更多