禁用休眠搜索中的提升 [elasticsearch 中的映射索引问题,通过休眠搜索]

disable boost in hibernate search [issue in mapping index in elasticsearch, via hibernate search]

我正在使用 Hibernate 和 Hibernate 搜索来索引弹性搜索中的 classes + 数据(从 java 到弹性搜索)。我已经设置好并提供了所有属性。 例如:

@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
}

在我的主要方法中,我将值传递给这个 class 并坚持。当我这样做时,我收到错误消息

[string] 类型在 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 中已被弃用,因此进入的 'String' 数据必须转换为'Keyword''Text', Hibernate Search orm 这样做,前提是没有 boost 参数(我尝试手动输入这有和没有升压参数,它在后者工作。

所以我得出结论,我必须选择这两个选项之一才能通过休眠将数据发送到 ES。

1) 构建一个将数据类型从对象转换为关键字的 fieldbridge

2) 禁用索引时间增强参数,以便在索引时不输入增强。

到目前为止,我还没有找到任何一个的解决方案,任何提示或帮助将不胜感激。

TIA

首先,Hibernate Search 5.6 和 5.7 只能与 Elasticsearch 2.x 一起正常工作。这些版本将只使用 "string" 数据类型,从不使用 "text" 或 "keyword"。 Hibernate Search 5.8 添加了对 Elasticsearch 5 的支持。它几乎准备就绪,但目前仅作为 Beta 版本提供(Hibernate Search 5.8.0.Beta4 是最新的)。请注意,如果您从 Elasticsearch 2 迁移,则必须删除旧索引并重新索引所有内容。

其次,索引时间提升has been removed in Elasticsearch 5,所以你应该改用查询时间提升。