我需要为客户端中的某些数据构建一个可搜索的索引,每个类型在结果列表中都有自己的部分,并且只显示前5个项目。让我们说我们有3种不同类型媒体的出版物:DVD,CD和LP(乙烯基)。所有都有艺术家,标题,长度,曲目数量,类型等属性。
我们说我用3种类型索引内容,称为dvd,cd和lp。
当我进行http://localhost:9200/myindex/_search?q=name:Metall *
之类的搜索时我希望得到一个响应,每个组有5个项目,组中的匹配总数,也许是人类可读的组名。可能看起来像这样:
{
"groups":{
"dvd":{
"name":"DVD",
"results":65,
"content":[
{
"id":1,
"title":"blablabla"
},
{
"id":4,
"title":"nananana"
},
{
"id":5,
"title":"foo bar"
}
]
},
"cd":{
"name":"CD",
"results":31,
"content":[
{
"id":43,
"title":"lalala"
}
]
},
"lp":{
"name":"Vinyl",
"results":5,
"content":[
{
"id":543,
"title":"buaaah"
}
]
}
}
}
是否可能以任何方式调整elasticsearch以输出这样的结果?
或者我应该在移动客户端进行分组,发出3个单独的请求,还是在elasticSearch面前提供服务,这会产生单独的请求并将它们组合到我建议的结构中?