Я использую гибернации-поиск-elasticsearch, спящий режим док говорит нам, что когда мы создаем объект с помощью JPA, индекс будет создан автоматически. Я нашел, что моя программа создала сущность успешно, но индекс не создан.поиск спящего режима для elasticsearch с JPA не может автоматически создать индекс, когда JPA создать объект
для использования зимуют-поиска и эс я импортировать гибернации-поиск-elasticsearch баночка
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search-elasticsearch</artifactId>
<version>5.6.0.Final</version>
</dependency>
persistence.xml
<persistence-unit name="dev_unit" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<mapping-file>META-INF/travel-service/orm.xml</mapping-file>
<properties>
<property name="hibernate.dialect" value="org.hibernate.dialect.MySQL57InnoDBDialect" />
<property name="hibernate.show_sql" value="true" />
<property name="hibernate.format_sql" value="false" />
<property name="hibernate.ejb.naming_strategy" value="org.hibernate.cfg.ImprovedNamingStrategy" />
<!--Hibernate JPA-->
<property name="hibernate.cache.region.factory_class" value="org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory"/>
<property name="hibernate.cache.use_second_level_cache" value="false" />
<property name="hibernate.cache.use_query_cache" value="false" />
<property name="hibernate.connection.provider_class"
value="org.hibernate.hikaricp.internal.HikariCPConnectionProvider" />
<property name="hibernate.hikari.dataSourceClassName" value="com.mysql.jdbc.jdbc2.optional.MysqlDataSource" />
<property name="hibernate.hikari.minimumIdle" value="5" />
<property name="hibernate.hikari.maximumPoolSize" value="10" />
<property name="hibernate.hikari.idleTimeout" value="30000" />
<property name="hibernate.hikari.dataSource.url" value="jdbc:mysql://127.0.0.1:3306/travel?useUnicode=true&charset=utf8mb4amp;autoReconnect=true" />
<property name="hibernate.hikari.dataSource.user" value="root" />
<property name="hibernate.hikari.dataSource.password" value="111111" />
<!-- search -->
<property name="hibernate.search.default.directory_provider" value="filesystem"/>
<property name="hibernate.search.default.indexBase" value="/Users/yybbk/index"/>
<property name="hibernate.search.elasticsearch.host" value="http://localhost:9200" />
<property name="hibernate.search.default.indexmanager" value="elasticsearch"/>
<property name="hibernate.search.default.elasticsearch.required_index_status" value="yellow"/>
<property name="hibernate.search.default.elasticsearch.index_schema_management_strategy" value="CREATE"/>
<property name="hibernate.search.default.elasticsearch.refresh_after_write" value="true"/>
</properties>
</persistence-unit>
Моя сущность:
@Entity
@Table(name = "groups")
@Indexed(index = "group")
public class Group {
private Long id;
private Long projectId;
private String name;
@Id
@Column(name = "id")
@GeneratedValue(strategy= GenerationType.AUTO)
@Field
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Basic
@Column(name = "project_id")
@Field
public Long getProjectId() {
return projectId;
}
public void setProjectId(Long projectId) {
this.projectId = projectId;
}
@Basic
@Column(name = "name")
@Field
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
Это все мое configs, я хочу спящий поиск автоматически создавать индекс, когда я использую метод сохранения JPA для создания объекта, b нет.
Спасибо.
мой проект - это старый проект, который использует hibernate core 4.3.8, и если я использую hibernate- search-orm 5.6.0.Final будут некоторые ошибки. поэтому я не использую hibernate-search-orm, просто используйте hibernate-search-elasticsearch напрямую. – diligent
@diligent Вы должны использовать hibernate-search-orm, чтобы автоматическое индексирование объектов Hibernate. –
@diligent Также помните, что Hibernate Search 5.6 поддерживает только Hibernate Core версии 5.0 и 5.1. Боюсь, вам придется либо обновить версию Hibernate Core (что было бы неплохо), либо вы не сможете использовать Hibernate Search. –