如何使用Elasticsearch集成按类型查询配置类型名称或过滤器?

时间:2017-11-07 14:10:14

标签: hibernate-search

我正在使用Hibernate Search与Elasticsearch集成版本5.8.2和5.6。

假设我有两个使用相同数据库的应用程序,我想搜索Person实体。这两个应用程序都将更新索引,但只会读取其中一个。

因为默认情况下Hibernate Search对type使用完全限定的类名,所以我最终为同一个实体提供了两种不同的类型:

Person - > com.example.x.Person

Person - > com.example.y.Person

在我执行搜索的应用程序中,在构建搜索查询时,Hibernate Search会自动为filter添加type查询,如:

"filter": {
    "type": {"value": "com.example.x.Person"}
}

因此搜索结果不包含com.example.y.Person类型的记录。

有什么办法可以自定义类型名称吗?

或者,有没有办法禁用/自定义添加的filter查询?

1 个答案:

答案 0 :(得分:0)

你暂时不能这样做。

有趣的是,几天前我们刚才有一个非常相似的问题:Override Elasticsearch _type in Hibernate Search

我的建议如下:如果它是完全相同的实体,你应该在一个普通的jar中提取它并在你的两个应用程序中使用相同的实体(如果你不能提取它,你仍然可以使用相同的包但我会建议提取它,以便你确定它完全一样。)