Hibernate Search 中是否有回退機制,以便即使在 Elastic 搜索集群不可用時也能夠執行搜索?我知道索引存盤在彈性搜索中,但是在這種情況下,Hibernate 搜索可以忽略索引并執行默認搜索嗎?有沒有辦法設定這個?
uj5u.com熱心網友回復:
不會。如果 Hibernate Search 使用 Elasticsearch 后端,它只使用那個后端。如果 Elasticsearch 已關閉,則 Hibernate Search 已關閉。
如果您想要“默認搜索”(無論這意味著什么),您需要在自己的代碼中實作它,例如:
if ( elasticsearch available ) {
// execute a query using Hibernate Search
}
else {
// implement some "default" search, whatever that means
}
至于如何確定 Elasticsearch 是否可用,您可以使用底層的 Rest 客戶端向 Elasticsearch 發送請求,或者只運行模式驗證(如果 Elasticsearch 不可用,這必然會失敗)。
類似(但不相同)的問題:https ://discourse.hibernate.org/t/how-to-know-if-index-already-exist-in-elastic-server/6207
編輯:也許更好的方法是嘗試正常搜索,捕獲例外然后回退,例如:
try {
}
catch (SearchException e) {
if ( e.getMessage().contains("connect") ) {
// implement some "default" search, whatever that means
}
else {
throw e;
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/491191.html
上一篇:彈性搜索-欄位內的多個短語匹配
