【问题标题】:Hibernate Search save entity to Elastic searchHibernate Search 将实体保存到弹性搜索
【发布时间】:2021-06-01 12:55:15
【问题描述】:

我尝试使用带有弹性搜索的 Hibernate Search 来进行全文搜索。 简单的实体可以正常工作,但有一个我有麻烦。 当我在数据列上设置注释 @FullTextField 时,应用程序启动时出现错误:

"休眠 ORM 映射: 输入“ru.search.entities.TestEntity”: 路径“.data”: 失败: - HSEARCH000135:没有“java.lang.Object”类型的默认值桥实现。使用自定义网桥。”

这是我的实体:

@Entity
@Indexed(index = "test")
@Table(name = "test")
@TypeDef(name = "jsonb", typeClass = Jsonb.class)
public class TestEntity {

    @Id
    @Column(name = "id")
    private UUID Id;

    @Column(name = "data")
    @Type(type = "jsonb")
    private Map<String, Object> data;
//constructor
//getters 
//setters
}

没有@FullTextField 注释实体正确放入postgres 和elastic。 Elastic 当然不包含数据列。

【问题讨论】:

    标签: java hibernate hibernate-search


    【解决方案1】:

    默认情况下,当您使用@FullTextField(或任何@*Field 注释)注释Map 时,Hibernate Search 将索引这些值。在您的情况下,值的类型为Object。 Hibernate Search 不知道如何索引 Object

    我怀疑您想索引任意 JSON 数据。如果是这种情况,我相信文档示例中有适合您的解决方案:

    • 阅读this section first,了解什么是属性桥以及如何使用它们。
    • 然后您可以找到一个(更复杂的)示例,它几乎完全符合您的要求here

    如果这不是您需要的,我建议您浏览文档:

    • 您可以找到支持的属性类型列表here
    • 您可以找到有关映射其他属性类型的帮助here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-20
      • 1970-01-01
      • 2023-04-02
      相关资源
      最近更新 更多