当前位置: 首页 > 面试题库 >

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

殷烨
2023-03-14
问题内容

目的

要使用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对上班有建议吗?


问题答案:

原因是在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才能使更改生效。



 类似资料:
  • 弹性搜索是用以下主体创建的 下面是elasticsearch中的两种不同元数据 第二记录 现在,在elasticsearch中使用以下查询搜索第一条记录时 查询以搜索第二条记录 第一个查询是给我正确的结果,因为查询"997439"存在于TokenizedDocumentFileName中,但是当我搜索marytest 2条记录时,我得到了下面的响应。 但当我给出文件名和扩展名,即“marytest

  • 问题内容: 我似乎无法让Python在子文件夹中导入模块。当我尝试从导入的模块创建类的实例时出现错误,但是导入本身成功。这是我的目录结构: 这是server.py的内容: 和user.py: 错误是:AttributeError:’模块’对象没有属性’用户’ 问题答案: 我相信您需要在Models目录中创建一个名为的文件,以便python将其视为模块。 然后,您可以执行以下操作: 您可以在其中添加

  • 我从用户c##cuongnguyen导出oracle数据库。导出后,我有转储文件,所以我想将此文件导入到另一个用户:mbbank 因此,我运行以下语法: ** imp mbbank/xxxxxx FROMUSER=c##cuongnguyen TOUSER=mbbank file=C:\oracle\export\cuongnguyen-user.DMP; ** 我收到了回复,是关于性格的。 导入

  • 我试图从djangotoolbox.fields使用Listfield,但它给我一个错误说: 我做错了什么?

  • 简介 通过 Cocos Creator 主菜单中 文件->导入项目 的子菜单,可以导入其他编辑器中的项目。目前支持导入的编辑器项目有: Cocos Studio 项目(*.ccs 文件) Cocos Builder 项目(*.ccbproj 文件) 相应的菜单项如图: 操作步骤说明 导入其他编辑器项目的操作步骤如下: 点击相应的菜单,打开文件选择对话框。 选择对应扩展名的文件,即可开始导入。如图: