休眠搜索将一个实体索引到两个不同的索引



我想根据情况将一个实体索引到不同的索引。

例如,如果我有一个如下所示的水果实体

@Indexed
public class Fruit {
@NumericField(forField = "id")
private Long id;
@Field(analyze = Analyze.NO)
private String name;
}

是否可以根据名称值索引到不同的索引?

名称 = "苹果" -> index_1

名称 = "橙色" -> index_2

首先,我建议您重新考虑是否真的需要这个。

如果每个"水果名称"的数据集完全不同(有些字段只为一个"水果名称"填充,或者它们的内容对于一个"水果名称"要大得多(,那么这是有意义的。我个人会重新考虑类型层次结构,但这并不总是您可以控制的。 话虽如此,请注意,目前您仍然必须对两个"水果名称"使用相同的映射(相同的字段(;您将只有两个不同的索引,它们可能具有不同的低级设置(存储选项等(。

如果每个"水果名称"的数据集相似(相同的字段,相似的内容,经常一起查询(,那么将它们拆分到两个索引中几乎没有功能上的收获:您只需要担心备份时的文件数量增加一倍,等等。 您可能会获得性能改进,但同样,通过调整合并设置来控制组成索引的段数,您可以获得类似的结果。

如果您真的需要根据"水果名称"对数据进行分区......这是如何做到的。该功能称为"分片":

  • 请参阅此处了解休眠搜索 5。这将适用于Lucene集成,但我不确定Elasticsearch集成。
  • 请参阅此处的Hibernate搜索6。这仅适用于 Lucene 集成。

在未来的更新中,Hibernate Search 6将具有基于属性对单一类型数据进行分区的专用功能;请参阅HSEARCH-3683。目前,您只能使用路由/分片。

最新更新