我想根据不同的情况将一个实体索引到不同的索引中。
例如,如果我有一个像下面这样的水果实体
@Indexed
public class Fruit {
@NumericField(forField = "id")
private Long id;
@Field(analyze = Analyze.NO)
private String name;
}
是否可以根据name的值来索引到不同的索引?
name = "apple" -> index_1
name = "orange" -> index_2
首先,我建议你重新考虑是否真的需要这样做。
如果每个 "水果名 "的数据集是相当不同的(有些字段只为一个 "水果名 "填充过,或者它们的内容对一个 "水果名 "来说大得多),它可能是有意义的。我个人会重新考虑类型的层次结构,但这并不总是你能控制的东西.这就是说,要知道,目前你仍然必须为两个 "水果名称 "使用相同的映射(相同的字段);你将有两个不同的索引,具有潜在的不同的低级设置(存储选项,...)。
如果每个 "果实名称 "的数据集是相似的(相同字段,相似内容,经常一起查询),那么将它们拆分在两个索引中,在功能上没有什么好处:你只是在备份时要担心两倍的文件,等等。合并设置 来控制多少个段组成你的索引。
如果你真的需要根据 "水果名称 "来划分数据......这里有一个方法。这个功能叫做 "sharding"。
Hibernate Search 6在未来的更新中会有一个专门的功能,可以根据属性对单一类型的数据进行分区;请看 HSEARCH-3683. 目前您只能使用例程arding。