【发布时间】:2018-11-09 21:08:20
【问题描述】:
我正在尝试使用 Nest.Net 库在弹性搜索上运行原始查询。 查询如下:
var json4 = @"
{
""query"": {
""bool"": {
""filter"":{
""term"":{ ""schoolId"": ""c15677ea-3e1e-4767-936a-2b3c57b00503""}
},
""must"": [
{
""multi_match"": {
""query"": ""001 Ali"",
""fields"": [""firstName"",""lastName"", ""phoneNumber"", ""code"", ""title""],
""type"": ""cross_fields""
}
}
]
}
}
}
";
SearchRequest searchRequest;
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(json4)))
{
searchRequest = client.RequestResponseSerializer.Deserialize<SearchRequest>(stream);
}
Deserialize 方法报错如下:
无法将当前 JSON 对象(例如 {"name":"value"})反序列化为类型 'System.Collections.Generic.IEnumerable`1[Nest.QueryContainer]' 因为该类型需要 JSON 数组(例如 [1 ,2,3]) 以正确反序列化。 要修复此错误,要么将 JSON 更改为 JSON 数组(例如 [1,2,3]),要么将反序列化类型更改为普通的 .NET 类型(例如,不是像整数这样的原始类型,而不是像这样的集合类型可以从 JSON 对象反序列化的数组或列表。 JsonObjectAttribute 也可以添加到类型中以强制它从 JSON 对象反序列化。 路径“query.bool.filter.term”,第 6 行,位置 51。
查询在 kibana 中运行良好。
谢谢
【问题讨论】:
-
什么版本的 NEST?
-
版本为5.6.0
-
5.6.0 在
IElasticClient上没有RequestResponseSerializer属性。您使用的是 6.x 版本吗?
标签: elasticsearch nest