休眠搜索配置

时间:2020-05-31 11:57:40

标签: java elasticsearch hibernate-search elasticsearch-mapping

我使用休眠搜索和弹性搜索作为后端。当我在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',这意味着响应将在映射定义中忽略类型名称。“]

2 个答案:

答案 0 :(得分:0)

您正在使用Elasticsearch 6.8,其中types已过时。有关更多信息,请参考removal of types

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

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

如果您计划滚动升级而不会停机,则您 应该首先升级到6.8,这是唯一具有的6.x版本 一些功能,例如对include_type_name参数的支持, 需要顺利升级到7.0。

答案 1 :(得分:0)

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

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

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

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