hibernate搜索将一个实体索引到两个不同的索引。

问题描述 投票:0回答:1

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

例如,如果我有一个像下面这样的水果实体

@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

java hibernate elasticsearch indexing hibernate-search
1个回答
0
投票

首先,我建议你重新考虑是否真的需要这样做。

如果每个 "水果名 "的数据集是相当不同的(有些字段只为一个 "水果名 "填充过,或者它们的内容对一个 "水果名 "来说大得多),它可能是有意义的。我个人会重新考虑类型的层次结构,但这并不总是你能控制的东西.这就是说,要知道,目前你仍然必须为两个 "水果名称 "使用相同的映射(相同的字段);你将有两个不同的索引,具有潜在的不同的低级设置(存储选项,...)。

如果每个 "果实名称 "的数据集是相似的(相同字段,相似内容,经常一起查询),那么将它们拆分在两个索引中,在功能上没有什么好处:你只是在备份时要担心两倍的文件,等等。合并设置 来控制多少个段组成你的索引。

如果你真的需要根据 "水果名称 "来划分数据......这里有一个方法。这个功能叫做 "sharding"。

Hibernate Search 6在未来的更新中会有一个专门的功能,可以根据属性对单一类型的数据进行分区;请看 HSEARCH-3683. 目前您只能使用例程arding。

© www.soinside.com 2019 - 2024. All rights reserved.