【问题标题】:hibernate search configuration休眠搜索配置
【发布时间】:2020-09-18 18:54:44
【问题描述】:

我使用休眠搜索和弹性搜索作为后端。当我在 xml 文件中配置 hibernate 和 hibernatesearch 时,一切正常,但是当我在 java 类中配置它时,会出现此警告,并且在我的搜索中找不到任何内容。 xml配置是:

<properties>
        <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3399/elastic" />
        <property name="hibernate.connection.username" value="admin" />
        <property name="hibernate.connection.password" value="admin" />

        <property name="hibernate.show_sql" value="true" />

        <property name="hibernate.search.default.indexmanager" value="elasticsearch"/>
        <property name="hibernate.search.default.elasticsearch.host" value="http://127.0.0.1:9400"/>
        <property name="hibernate.search.default.elasticsearch.index_schema_management_strategy" value="CREATE"/>
        <property name="hibernate.search.default.elasticsearch.required_index_status" value="YELLOW"/>

    </properties>

java类配置是:

java.util.Properties settings = new java.util.Properties();
            settings.put(org.hibernate.cfg.Environment.DRIVER, "com.mysql.cj.jdbc.Driver");
            settings.put(org.hibernate.cfg.Environment.URL, "jdbc:mysql://127.0.0.1:3399/elastic");
            settings.put(org.hibernate.cfg.Environment.USER, "admin");
            settings.put(org.hibernate.cfg.Environment.PASS, "admin");
           settings.put(org.hibernate.cfg.Environment.DIALECT,"org.hibernate.dialect.MySQL8Dialect");
            settings.put(org.hibernate.cfg.Environment.SHOW_SQL, "true");
            settings.put(org.hibernate.cfg.Environment.CURRENT_SESSION_CONTEXT_CLASS, "thread");
            settings.put(org.hibernate.cfg.Environment.POOL_SIZE, "5");
settings.put("hibernate.search.default.indexmanager", "elasticsearch");
            settings.put("hibernate.search.default.elasticsearch.host", "http://127.0.0.1:9400");
            settings.put("hibernate.search.default.elasticsearch.index_schema_management_strategy", "CREATE");
            settings.put("hibernate.search.default.elasticsearch.required_index_status", "YELLOW");

警告是:

警告:请求 [HEAD http://127.0.0.1:9400/com.radar.elasticsearch.videogame] 返回 1 个警告:[299 Elasticsearch-6.8.0-65b6179“[删除类型] 参数 include_type_name 应在获取索引请求中明确指定以准备 7.0。在 7.0 中 include_type_name 将默认为 'false',这意味着响应将省略映射定义中的类型名称。"]

【问题讨论】:

    标签: java elasticsearch hibernate-search elasticsearch-mapping


    【解决方案1】:

    您使用的是 Elasticsearch 6.8,其中不推荐使用 types。请参考removal of types了解更多信息,

    如果您在所有 API 中使用自己的 type 名称,则需要传递 _doc 而不是类型名称,否则请使用 include_type_name

    更多信息请参考this官方博客

    如果您计划以滚动方式在不停机的情况下升级,您 应该先升级到 6.8,这是唯一的 6.x 版本 一些功能,例如对 include_type_name 参数的支持,其中 需要顺利升级到7.0。

    【讨论】:

      【解决方案2】:

      Hibernate Search 5 中的 Elasticsearch 支持是实验性的,仅在 Elasticsearch 5.6 之前的版本中进行了测试。

      如果您需要升级到 Elasticsearch 7,请升级到 Hibernate Search 6。 Hibernate Search 6 目前处于 Beta 阶段,但提供了更适合 Elasticsearch 的改进后的 API。

      它还提供了 Hibernate Search 5 中没有的新功能,例如对 nested documents 的支持或 inject JSON directly into your query 的能力(以利用 Hibernate Search DSL 尚不支持的更多奇异谓词/排序/等)。

      编辑:此外,您还可以找到有关 Hibernate Search 与各种其他组件的兼容性的信息on this page of the official website

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-16
        • 1970-01-01
        • 2011-11-17
        • 2021-07-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多