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没问题。如果它解决了您的问题,请不要忘记将答案标记为已接受:) –