当前位置: 首页 > 知识库问答 >
问题:

无法让Elasticsearch插件与Grails 3一起使用

商泽宇
2023-03-14

我曾尝试将Elasticsearch插件(“org.grails.plugins:Elasticsearch:1.4.1”)与grails 3.1.9项目连接在一起,但没有成功。

我还在github中上传了一个简单的应用程序来演示这个问题(https://github.com/jackiebai/testEs)

上面的示例测试应用程序只有1个名为Person的域类:

class Person {
    String name
    static searchable = true
    static constraints = {
    }
}

相应的服务类PersonService用于保存和索引人员数据:

import grails.transaction.Transactional
@Transactional
class PersonService {
    def addPerson(Person person){
        person.save()
        person.index()
    }
    def addPerson(String name) {
        Person p = new Person(name:name)
        addPerson(p)
    }
}

我还在引导程序中添加了几行代码。groovy,以便在应用程序启动时将一些数据插入默认的hibernate db:

class BootStrap {
    def personService
    def init = { servletContext ->
        personService.addPerson("Person One")
        personService.addPerson("John Smith")
    }
    def destroy = {
    }
}

应用程序。开发环境的yml变量设置如下所示:环境:开发:数据源:dbCreate:create drop url:jdbc:h2:mem:devDb;MVCC=真;LOCK\u TIMEOUT=10000;DB\u CLOSE\u ON\u EXIT=假弹性搜索:客户端:模式:节点传输。sniff:true bulkIndexOnStartup:true datastoreImpl:hibernateDatastore

根据插件用户指南(http://noamt.github.io/elasticsearch-grails-plugin/docs/index.html),build.gradle中包含了其他依赖项和bootRun代码块

dependencies {
    ...
    compile 'org.grails.plugins:elasticsearch:1.4.1'
    compile 'org.elasticsearch:elasticsearch:5.4.1'
    ...
}
bootRun{
    jvmArgs = ['-Des.path.home=/Users/myname/elasticsearch-5.4.1']
}

不幸的是,应用程序未能在我的osx 10.11.6,java 1.8.0_91环境下运行,错误如下:

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'elasticSearchClient': FactoryBean threw exception on object creation; nested exception is java.lang.NoClassDefFoundError: org/elasticsearch/mapper/attachments/MapperAttachmentsPlugin
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:175)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:103)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1590)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:317)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
    at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:351)
    ... 34 common frames omitted
Caused by: java.lang.NoClassDefFoundError: org/elasticsearch/mapper/attachments/MapperAttachmentsPlugin
    at grails.plugins.elasticsearch.ClientNodeFactoryBean.getObject(ClientNodeFactoryBean.groovy:207)
    at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:168)
    ... 39 common frames omitted
Caused by: java.lang.ClassNotFoundException: org.elasticsearch.mapper.attachments.MapperAttachmentsPlugin
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 41 common frames omitted

共有2个答案

秦宁
2023-03-14

我相信版本1.4.1已经损坏。您可以尝试2.4.0。RC1与Grails 3.3,但您需要添加依赖到mapper-attachments并为Spring Boot指定elasticsearch.version

ext['elasticsearch.version'] = '5.4.1'

dependencies {
    compile 'org.grails.plugins:elasticsearch:2.4.0.RC1'
    runtime 'org.elasticsearch.plugin:mapper-attachments:2.4.6'
}

参见第198期

拓拔浩阔
2023-03-14

根据留档你应该用v1.2.0

https://github.com/noamt/elasticsearch-grails-plugin

 类似资料:
  • 我有一个基于android bootstrap的项目。我按照所有步骤使用android studio将google-play-services\u lib添加到项目中。我在工作室制作的作品很棒。当我在手机上安装应用程序时,它会因此错误而死亡 08-02 11:49:26.863 22719-22719/com。唐费尔克。Android引导程序E/AndroidRuntime:致命异常:主java。

  • 我有一个多模块的gradle项目。我的一个模块的测试在单独的模块中。例如:项目A、项目测试1、项目测试2、项目测试3。在测试项目中创建Jacoco执行报告。我想对我的项目进行声纳分析,但声纳无法找到jacoco文件。 在项目A中,sonarqube属性,我给出 但我得到了这个例外 找不到参数的方法属性 () [声纳.jaco.reportPaths,“项目ATest1/gradleBuild/ja

  • 我正在编写一个Web项目,它使用了Apache Tomcat 5.0和JDK 1.4.2之上的Spring框架2.5。 当Tomcat启动时,它从未加载Spring。 Web.xml如下: "web-Application ationContext.xml"就像: 控制台提供了以下日志堆栈跟踪: 严重:配置类org的应用程序侦听器时出错。springframework。网状物上下文ContextL

  • 问题内容: 好的,我一直在遇到aws或某些问题,以至于我似乎无法使mod_rewrite正常工作。 仅出于测试目的,我做了以下工作: 1使用AWS控制台从向导部署新的AMI 64位实例 2百胜装的apache 3编辑了/etc/httpd/conf/httpd.conf: 好像 4确保 在文件中且未注释。 5重启apache: 6创建了两个新文件: 包含: 包含: 7.创建文件: 包含(共TOTA

  • 问题内容: 我的程序应该等待按下向左或向右箭头键,然后更改一个值,以便下次更新PaintComponent时,屏幕看起来有所不同。但是,运行该程序时,屏幕没有变化。 以下是变量声明: 这是主要的KeyListener声明: 这是用于绘画的方法: 当我运行该程序时,该程序会打印外壳,但是当我按箭头键时,屏幕上没有任何变化。 问题答案: 您需要先将关键侦听器添加到组件,然后才能调用它: 您还需要使组件