我收到List<org.apache.avro.generic.GenericRecord>
的数据内容如下所示(为清晰起见,使用了JSON表示法).如何使用Java最好地保存这些记录类型?
记录1:
[
{
"serial_no" : "x",
"data1" : "d"
},
{
"serial_no" : "y",
"data2" : "d2"
},
............................MANY MORE
]
Run Code Online (Sandbox Code Playgroud)
记录2:
[
{
"id":"x",
"type":"A"
},
{
"id" : "x",
"type" : "B"
},
{
"id" : "y",
"type" : "A",
},
{
"id" : "y",
"type" : "B"
}
]
Run Code Online (Sandbox Code Playgroud)
如您所见,每个serial number
记录中都有两条记录.serial_no
在record1中与id
record2中相同.
我的目标是:找到这两条记录的最有效方法.
解决方案我认为:
像这样创建一个地图
map.put("x", [map.put("A",List), map.put("B",List)]);
Run Code Online (Sandbox Code Playgroud)
但我觉得,它是一个复杂的结构.因为地图包含地图列表[each map is Map<String,List<Map<String,String>>>]
.
有什么建议?
编辑
记录中的每个条目都是 …
我有一个使用Elasticsearch Java API(5.6.7)的应用程序来执行聚合查询(术语).我使用curl和HTTP API(显示相关信息)创建了以下搜索文档:
{
"from" : 0,
"size" : 0,
"sort" : [
{
"@timestamp" : {
"order" : "desc"
}
}
],
"aggregations" : {
"level" : {
"terms" : {
"field" : "level.keyword",
"size" : 10,
"min_doc_count" : 1,
"shard_min_doc_count" : 0,
"show_term_doc_count_error" : false,
"order" : [
{
"_count" : "desc"
},
{
"_term" : "asc"
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
既然已经在我的Java程序中实现了查询,我注意到结果与HTTP API结果不同!
都返回确切的关于碎片相同元信息,点击次数等:
{
"took": 1,
"timed_out": false, …
Run Code Online (Sandbox Code Playgroud)