我已經配置了我的彈性搜索實現,以便在映射中通過一個id構造結果,並且當我將該方面顯示給用戶時,我需要能夠顯示代表它的人類可讀名稱。我需要的數據全部出現在映射中,但我不確定如何將它作爲方面的一部分返回。當然有可能嗎?ElasticSearch其他方面的數據
考慮下面的例子,我想小面給我一些方式來thingId
到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
}
]
}
}
}
編輯
This answer關於Solr的建議,我刻面這兩個屬性(thingName
和thingId
),然後就在這兩個方面的結果集循環,假設項的順序會是相同的。我不知道那會有多可靠,但它是一種選擇。
編輯2
This answer表明,這是不可能做到我想要的東西,而不兩個字段組合成一個單一的價值和刻面處爲:thingId|thingName
。不理想。
編輯3
This answer表明的值一起組合成單個場和刻面在其上(如上所述),但它使用一個術語腳本實現的結合,因此不需要我索引合併值的形式。仍然不完美,但似乎是最蹩腳的選擇。
結合'thingId'和'thingName'成一個字符串,並在其分裂應用程序層不是沒有問題,但我真的希望有更好的解決方案。 –
我認爲你需要考慮如果你真的需要使用Id的方面。你爲什麼不使用thingName?你有沒有想過? –
使用'thingName'是一個選項,但它不太理想,因爲我不能保證'thingName'是唯一的。 –