小编典典

Elasticsearch:无法导入记录器(答案适用于其他导入)

elasticsearch

目的

要使用Elasticsearch的记录器功能来更好地调试服务器端Groovy脚本代码。

问题总结

无法汇入 org.elasticsearch.common.logging.*

细节

  • 使用Elasticsearch 2.3
  • 存储在/etc/elasticsearch/scriptsJava客户端中的脚本已经能够通过来成功访问它们Client.update()。即,文件夹位置应正确。我已经看到了将代码放置在中的建议elasticsearch/config/scripts,但实际上对我不起作用)
  • 尝试过此解决方案,即:

import org.elasticsearch.common.logging.*
ESLogger logger = ESLoggerFactory.getLogger('myscript')

但是Elasticsearch日志显示了一个编译器投诉: unable to resolve class org.elasticsearch.common.logging.ESLogger

我检查GitHub上的源代码在这里和ESLogger类是存在的。所以我不知道为什么会这样。

有人import对上班有建议吗?


阅读 288

收藏
2020-06-22

共1个答案

小编典典

原因是在Elasticsearch
2.2中启用
Java安全管理器进行脚本编写。这意味着您需要遵循规则并配置希望脚本能够访问的类

为了能够在脚本中进行日志记录,我定义了自己的策略文件并将其设置为JAVA_OPTS,甚至在启动命令中将其设置为-Djava.security.policy=file:///D:/ES/elasticsearch-2.3.1/my.policy。文件的
最小 内容my.policy应为:

grant {
    permission org.elasticsearch.script.ClassPermission "org.elasticsearch.common.logging.*";
    permission org.elasticsearch.script.ClassPermission "org.apache.log4j.*";
};

当然,您需要重新启动ES才能使更改生效。

2020-06-22