我已将我的 Elastic Search 实现配置为通过映射中的 id 对结果进行分面,当我向用户显示该分面时,我需要能够显示代表它的人类可读名称。我需要的数据都存在于映射中,但我不确定如何将它作为方面的一部分返回。肯定有可能吗?
鉴于以下示例,我想给我一些方法来关联thingId
to thingName
(或任何其他thing
可能需要的属性):
映射
{
thingId,
thingName
}
分面查询
{
"facets":{
"things":{ "terms":{ "field":"thingId" } }
}
}
结果
{
"hits":{
"total":3,
"max_score":1.0,
"hits":[
...
]
},
"facets":{
"things":{
"_type":"terms",
"missing":0,
"total":3,
"other":0,
"terms":[
{
"term":"5",
"count":1
},
{
"term":"4",
"count":1
},
{
"term":"2",
"count":1
}
]
}
}
}
编辑
这个关于 Solr 的答案表明我对两个属性 (thingName
和thingId
) 进行构面,然后在两个构面结果集上进行循环,假设项目的顺序是相同的。我不知道这有多可靠,但这是一种选择。
编辑 2
这个答案表明,如果不将这两个字段组合成一个值并对此进行分面,就不可能做我想做的事情:thingId|thingName
. 不理想。
编辑 3
这个答案建议将值组合到一个字段中并在其上进行刻面(如上所述),但它使用术语脚本来实现组合,因此不需要我索引值的组合形式。仍然不完美,但似乎是最不糟糕的选择。