マッピングの 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
この回答は、2 つのフィールドを 1 つの値に結合し、それをファセット処理しないと、私がやりたいことを実行できないことを示唆していますthingId|thingName
。理想的ではありません。
編集 3
この回答では、値を 1 つのフィールドに結合して (上記のように) ファセットすることを提案していますが、条件スクリプトを使用して結合を実現しているため、結合された値の形式にインデックスを付ける必要はありません。まだ完全ではありませんが、これが最もくだらないオプションのようです。