目的
要使用Elasticsearch的记录器功能来更好地调试服务器端Groovy脚本代码。
问题总结
无法汇入 org.elasticsearch.common.logging.*
org.elasticsearch.common.logging.*
细节
/etc/elasticsearch/scripts
Client.update()
elasticsearch/config/scripts
import org.elasticsearch.common.logging.* ESLogger logger = ESLoggerFactory.getLogger('myscript')
import org.elasticsearch.common.logging.*
ESLogger logger = ESLoggerFactory.getLogger('myscript')
但是Elasticsearch日志显示了一个编译器投诉: unable to resolve class org.elasticsearch.common.logging.ESLogger
unable to resolve class org.elasticsearch.common.logging.ESLogger
我检查GitHub上的源代码在这里和ESLogger类是存在的。所以我不知道为什么会这样。
有人import对上班有建议吗?
import
原因是在Elasticsearch 2.2中启用了Java安全管理器进行脚本编写。这意味着您需要遵循规则并配置希望脚本能够访问的类。
为了能够在脚本中进行日志记录,我定义了自己的策略文件并将其设置为JAVA_OPTS,甚至在启动命令中将其设置为-Djava.security.policy=file:///D:/ES/elasticsearch-2.3.1/my.policy。文件的 最小 内容my.policy应为:
-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才能使更改生效。