如何使用 Elasticsearch 集成配置类型名称或按类型查询进行筛选



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

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

由于默认情况下,Hibernate Search 对 type s 使用完全限定的类名,因此我最终为同一实体提供了 2 种不同的类型,例如:

Person -> com.example.x.Person

Person -> com.example.y.Person

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

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

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

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

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

你暂时不能这样做。

有趣的是

,几天前我们刚刚遇到了一个非常相似的问题:在Hibernate搜索中覆盖Elasticsearch_type。

我的建议如下:如果它是完全相同的实体,您应该将其提取到一个公共 jar 中,并在两个应用程序中使用相同的实体(如果您无法提取它,您仍然可以使用相同的包,但我建议您提取它,以便您确定它是完全相同的)。

最新更新