我正在尝试在弹性搜索上安装twitter river插件。我之前在我的Mac上做过没有任何问题,但这次我试图在Linux服务器上安装,我一直得到这个类没有找到异常。当我使用https://github.com/elasticsearch/elasticsearch-river-twitter/blob/master/README.md
中所示的curl -XPUT命令时会出现异常以下是我得到的例外情况: -
[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,但由于某种原因,它们不能用于elasticsearch执行。
答案 0 :(得分:2)
这是配置和安装问题。
步骤:
通过运行ps aux|grep elasticsearch
(在Linux上)来检查弹性搜索的安装位置,这将告诉该计算机上运行的是哪个可执行文件(查找如下所示的行:( - Des.default .path.home = / usr / share / elasticsearch)或类似的东西。
如果有几个弹性搜索实例正在运行,请将它们全部删除并启动您关心的那个。
确保只有一个elasticsearch实例正在运行(如果这是意图),并且从上面的第一步开始,转到主路径目录。
确保插件安装在elasticsearch / plugins目录中的此目录中。
重新启动elasticsearch。
答案 1 :(得分:0)
确认您的类路径包含带有内容的文本文件es-plugin.properties
插件= your.package.YourRiverPlugin
缺少这样的属性文件显示几乎相同的错误。
有关详细信息,请参阅http://blog.trifork.com/2013/01/10/how-to-write-an-elasticsearch-river-plugin/