找不到ElasticSearch+Twitter river类



我正在尝试在弹性搜索上安装twitter river插件。我以前在mac上做过,没有任何问题,但这次我试图在Linux服务器上安装,我一直得到这个类没有发现的异常。当我使用curl-XPUT命令时出现异常,如中所示https://github.com/elasticsearch/elasticsearch-river-twitter/blob/master/README.md

这是我得到的例外:-

[2013-11-25 15:12:00,116][WARN ][river                    ] [Fasaud] failed to create                 river [twitter][my_twitter_river2]
org.elasticsearch.common.settings.NoClassSettingsException: Failed to load class with value [twitter]
    at org.elasticsearch.river.RiverModule.loadTypeModule(RiverModule.java:87)
    at org.elasticsearch.river.RiverModule.spawnModules(RiverModule.java:58)
at org.elasticsearch.common.inject.ModulesBuilder.add(ModulesBuilder.java:44)
at org.elasticsearch.river.RiversService.createRiver(RiversService.java:135)
at org.elasticsearch.river.RiversService$ApplyRivers$2.onResponse(RiversService.java:271)
at org.elasticsearch.river.RiversService$ApplyRivers$2.onResponse(RiversService.java:265)
at org.elasticsearch.action.support.TransportAction$ThreadedActionListener$1.run(TransportAction.java:93)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:724)
Caused by: java.lang.ClassNotFoundException: twitter
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.elasticsearch.river.RiverModule.loadTypeModule(RiverModule.java:73)
... 9 more

我已经尝试过多次重新启动、安装,但无论如何都无法使其正常工作。我还可以看到,插件目录中的jar文件包含类twitter,但由于某些原因,它们不可用于弹性搜索执行。

这是一个配置和安装问题。

步骤:

  1. 通过运行ps aux|grep elasticsearch(在linux上)查看elasticsearch的安装位置,这将告诉哪一个可执行文件正在该机器上运行(查找一行,如下所示:(-Des.default.path.home=/usr/share/aelaticsearch)或类似的行。

  2. 如果有几个弹性搜索实例正在运行,请将它们全部杀死,然后启动您关心的实例。

  3. 确保只有一个弹性搜索实例正在运行(如果这是目的的话),并从上面的第一步转到主路径目录。

  4. 确保插件安装在elasticsearch/plugins-dir.中的此目录中

重新启动弹性搜索。

确认类路径包含一个包含内容的文本文件es-plugin.properties

plugin=your.package.YourRiverPlugin

缺少这样的属性文件显示了几乎相同的错误。

有关详细信息,请参阅http://blog.trifork.com/2013/01/10/how-to-write-an-elasticsearch-river-plugin/

最新更新