如何解决当响应序列化时,BucketAggregate 上的“键”丢失
我正在将服务从 ES 5.0 升级到 6.8。我有一个在 v5 中序列化的存储桶聚合:
"items": [
{
"key": "random+topic","docCount": 27919,"aggregations": {
"ParentReference": {
"docCount": 24992,"aggregations": {
"Popularity": {
"value": 25223
}
}
}
}
},{
"key": "unkNown problem+latency","docCount": 24566,"aggregations": {
"ParentReference": {
"docCount": 23419,"aggregations": {
"Popularity": {
"value": 23931
}
}
}
}
},
使用 Elasticsearch.Net 和 nest 的 v6,序列化后,我最终得到:
"items": [
{
"ParentReference": {
"Popularity": {
"value": 25223
}
}
},{
"ParentReference": {
"Popularity": {
"value": 23931
}
}
},
我之前遇到过不再返回“聚合”属性的问题(尽管我希望有一个指向有关重大更改公告的指针),并相应地更新了我的代码。但是,如果没有 Key 和 docCount,我将无能为力。我想一定有一些与 Json 解析更改相关的东西。
我已经尝试过以下步骤: Custom Serialization | Elasticsearch.Net and NEST: the .NET clients [6.x] | Elastic
我尝试过使用默认序列化器,以及使用 JsonNetSerializer 的自定义序列化器。默认无效。
谁能就我应该做什么提出建议?
请注意,这是我获取 BucketAggregate 的方式:
var childAgg = response.Aggregations[ss.Type] as SingleBucketAggregate;
var nestedAgg = childAgg.Aggregations[ss.Path] as SingleBucketAggregate;
var countAgg = nestedAgg.Aggregations[sstermsName] as BucketAggregate;
return new ProviderResult<BucketAggregate>
{
Result = countAgg,};
谢谢! ~约翰
附加:
Elasticclient elasticclient_BuiltInSerializer = new Elasticclient(); var source = elasticclient_BuiltInSerializer.sourceSerializer.SerializetoString(o); var response = elasticclient_BuiltInSerializer.RequestResponseSerializer.SerializetoString(o);
ConnectionSettings connectionSettings = new ConnectionSettings(new SingleNodeConnectionPool(new Uri("http://fake")),JsonNetSerializer.Default);
Elasticclient elasticclient_JsonNetSerializer = new Elasticclient(connectionSettings);
var source2 = elasticclient_JsonNetSerializer.sourceSerializer.SerializetoString(o);
var response2 = elasticclient_JsonNetSerializer.RequestResponseSerializer.SerializetoString(o);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。