我正在尝试在弹性搜索上安装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,但由于某些原因,它们不可用于弹性搜索执行。
这是一个配置和安装问题。
步骤:
-
通过运行
ps aux|grep elasticsearch
(在linux上)查看elasticsearch的安装位置,这将告诉哪一个可执行文件正在该机器上运行(查找一行,如下所示:(-Des.default.path.home=/usr/share/aelaticsearch)或类似的行。 -
如果有几个弹性搜索实例正在运行,请将它们全部杀死,然后启动您关心的实例。
-
确保只有一个弹性搜索实例正在运行(如果这是目的的话),并从上面的第一步转到主路径目录。
-
确保插件安装在elasticsearch/plugins-dir.中的此目录中
重新启动弹性搜索。
确认类路径包含一个包含内容的文本文件es-plugin.properties
plugin=your.package.YourRiverPlugin
缺少这样的属性文件显示了几乎相同的错误。
有关详细信息,请参阅http://blog.trifork.com/2013/01/10/how-to-write-an-elasticsearch-river-plugin/