0

我使用Hibernate與Hibernate搜索索引彈性搜索(從Java到elasticsearch)中的類+數據。我已經設置並提供了所有的屬性。 對於前:禁用在Hibernate搜索提升[彈性搜索映射索引問題,通過休眠搜索]

@Entity 
@indexed(name="a") 
public class a{ 

@Id 
@Generated value 
private integer i; 

@Field(index=index.yes, analyze=analyze.no, store=store.yes, norms = norms.no) 
private String b; 
//Getter and Setter 
} 

在我的主要方法我傳遞值到這個類和堅持。當我這樣做時,我收到錯誤消息,其中說

5.0中刪除了[字符串]類型。您現在應該使用[text]或[keyword]並且由於boost參數而禁用了自動升級。

給你更多的細節

它發送的Json輸入在這個模式

PUT a/a_mapping 
{ 
"properties":{ 
    "i":{ 
    "type": "String" 
    "boost":1.0, 
    "index": not_analyzed 
    "store":yes 
    }, 
    "b":{ 
    "type": "String" 
    "boost":1.0, 
    "index": not_analyzed 
    "store":yes 

我已經玩了之後瞭解什麼是字符串數據類型都棄用ES 5.0,所以「字符串'數據進入,必須轉換爲'關鍵字''文本',Hibernate搜索orm這樣做,如果沒有助推參數(我試圖手動輸入這個有和沒有b oost參數,它在後者中起作用)。

所以我得出結論,我必須通過休眠發送數據到ES這兩個選項。

1)無論是構建的fieldbridge將數據類型轉換從對象到關鍵字

2)禁用索引時間升壓參數,使得升壓未輸入而索引。

到目前爲止,我還沒有找到解決方案,任何提示或幫助將不勝感激。

TIA

回答

1

首先,Hibernate Search的5.6和5.7將只與Elasticsearch 2.x的正常工作這些版本將只使用「字符串」數據類型,而不使用「文本」或「關鍵字」。 Hibernate Search 5.8增加了對Elasticsearch 5的支持。它幾乎已準備就緒,但現在只能作爲Beta版本使用(Hibernate Search 5.8.0.Beta4是最新版本)。請注意,如果您從Elasticsearch 2遷移,則必須刪除舊索引並重新索引所有內容。

二,索引時間提升has been removed in Elasticsearch 5,所以你應該用查詢時間提升來代替。

+0

我在5.8版的hibernate網站上看到過你的帖子,它解決了我在問題中提到的所有問題。感謝您所提供的所有信息。 – BadumTsch

+0

@BadumTsch沒問題。如果它解決了您的問題,請不要忘記將答案標記爲已接受:) –