gpt4 book ai didi

elasticsearch - Hibernate 搜索动态映射

转载 作者:行者123 更新时间:2023-12-02 22:28:30 25 4
gpt4 key购买 nike

我正在尝试通过使用 hibernate-search Elasticsearch 集成来将 Elasticsearch 与 hibernate 结合使用。我有使用鉴别器策略的 Multi-Tenancy 数据,因此最好使用自动添加的租户标识符来索引实体。到目前为止,这似乎有效:

Session session = sessionFactory
.withOptions()
.tenantIdentifier("parkId-" + p.getId().toString())
.openSession();

但是,在索引过程中, Elasticsearch 会因为 strict_dynamic_mapping_exception 而报错。 :
Response: 
{
"index": {
"_index": "entities.productmodel",
"_type": "entities.ProductModel",
"_id": "parkId-1_29426",
"status": 400,
"error": {
"type": "strict_dynamic_mapping_exception",
"reason": "mapping set to strict, dynamic introduction of [__HSearch_TenantId] within [entities.ProductModel] is not allowed"
}
}
}

尽管我重写了休眠搜索的默认行为并将动态映射设置为 true,但仍然如此,如 docs 中所示。 :
configuration.setProperty("hibernate.search.default.elasticsearch.dynamic_mapping", "true");

(其他设置正在通过此方法正确设置,所以我知道这不是问题。)

知道我错过了什么吗?甚至设置 dynamic_mappingfalse结果没有变化 - Elasticsearch 仍然提示映射设置为严格。我的 Elasticsearch 集群通过 docker 在本地运行。

最佳答案

确保在开发时每次尝试之前重新生成架构。你不应该需要 dynamic_mapping对此进行设置,但是如果您在尝试添加 Multi-Tenancy 之前生成了架构,并且此后没有更新架构,您将遇到类似这样的错误。

只需删除 Elasticsearch 集群中的索引,或设置属性 hibernate.search.default.elasticsearch.index_schema_management_strategydrop-and-create ( 不用于生产,您将丢失所有索引数据 )。见 this section of the documentation有关模式生成的更多信息。

关于elasticsearch - Hibernate 搜索动态映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51565308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com