Grails3.3.x 安装elasticsearch插件问题
这两天尝试使用grails3,搭建一个mongodb,elasticsearch的环境,在按照mongodb插件和elasticsearch插件的说明页正常安装后,所得的数据不能index到elasticsearch中.
如果如下定义domain,选择使用searchable=true时
package com.songtao.dw
class Bike {
String name
String type
static searchable = true
static constraints = {
name nullable: true
type nullable: true
}
}
项目会一直报错:
Caused by: org.grails.core.exceptions.GrailsConfigurationException: The method [public abstract org.grails.datastore.mapping.model.PersistentEntity org.grails.datastore.mapping.model.MappingContext.getPersistentEntity(java.lan
g.String)] cannot be accessed before GORM has initialized
如果去掉domain中的searchable=true
在service中调用 elasticsearchService 时,仍然为空
那我岂不是白装es插件了???!!
经过大量的翻查资料,终于找到原因了:
原来在grails3.2.x升级到grails3.3.0的时候,将grails自带的GrailsEntity废弃掉了.
Grails Domain Class API Deprecated
因此导致了在一些插件中使用grailsEntity的特性时,会出错.
这篇文章 写的比较详细,搜索 GrailsDomainClass 或者elasticsearch 找到具体的解释位置.
文中说明应该注入 grailsDomainClassMappingContext ,实测并无卵用. 准备降低grails的版本了.