elasticsearch plugin 报错 java.lang.RuntimePermission getClassLoader

   编写elasticsearch插件时,很容易出现权限问题。java.lang.RuntimePermission "getClassLoader"。

解决方案: https://www.elastic.co/guide/en/elasticsearch/plugins/current/plugin-authors.html

具体来说:

1,在插件根目录下 新建 plugin-security.policy 文件,其中加上必须的权限。

elasticsearch会在启动时读取该文件,将文件中的权限加到该plugin目录下的所有的 *.jar 上。

2,在使用权限的地方使用赋权代码:

// ES permission you should check before doPrivileged() blocks
import org.elasticsearch.SpecialPermission;

SecurityManager sm = System.getSecurityManager();
if (sm != null) {
  // unprivileged code such as scripts do not have SpecialPermission
  sm.checkPermission(new SpecialPermission());
}
AccessController.doPrivileged(
  // sensitive operation
  // 你要的额外权限的地方的代码
);

这样doPrivileged 里面的代码就会获取plugin-security.policy中的权限,不会报错了。除非plugin-security.policy文件中权限没有配全。

以上就是elasticsearch插件的获取权限的流程。

警告:其中第二步是不可避免的,虽然很麻烦。


http://www.niftyadmin.cn/n/886281.html

相关文章

在k8s pod container 中写入多行命令

一般情况下,k8s 在 Job 或 CronJob 中只需要写入简单的 shell 命令,而对于需要执行脚本的话,需要将 脚本 挂载到configMap中,然后将其挂载到 volume 上,然后执行 xxxx.sh 但是对于介于一两行和复杂的shell 之间采用多…

elasticsearch 写入流程分析

ES 写入流程 ES是一个底层为Lucene的搜索框架,封装了Lucene的复杂性,写入到ES 的文当是近实时搜索的,原因是Lucene只支持归档的数据才能被搜索到。在ES的话术中搜索是按照段(segment)来搜索的,这样导致一个…

elasticsearch 快照介绍

快照用于保存运行着的elasticsearch 集群中运行的数据,可以将一个或多个 index 保存到 repository(仓库中),同一个 repo 的不同快照之间的数据是增量添加的,也就是说snap_1 ,之后再创建 snap_2 ,那么snap_2 只保存 snap_1 和 snap_2 之间的增…

elasticsearch explain 和 Lucene explain 比较

elasticsearch explain 和 Lucene explain 比较 此博客是基于 elasticsearch7.X 写的 Lucene : Query query new TermQuery(new Term("content", "a")); int resultTopN 5; ScoreDoc [] scoreDocs searcher.search(query, resultTopN).sc…

elasticsearch synonym filter 使用思考

ES synonym filter 为了进行扩为了进行扩召回,一种有效的方式是添加同义词,加入同义词后扩大了搜索范围同时也带来了两个问题: term query 原词需要比同义词有更高的评分 # 发现结果中 原词和同义词 具有同样的权值 GET learning_test_03/_s…

在elasticsearch 中更好的处理同义词

需求 使用 ES 进行作为搜索引擎时一般会出现这样的场景,有一个同义词表,当查询时,也能命中到同义词。举例来说,画图,绘图 是一对同义词,当用户搜索 画图 时, 我们往往希望包含绘图 的doc 也在召回结果中。…

elasticsearch OOM

elasticsearch OOM 一次 elasticsearch挂掉,查看日志显示是 java.lang.OutOfMemoryError ,并且报错是由 netty 报出来的。netty 是节点间或 外部对 ES 集群的通信组件; [2022-01-21T11:17:29,031][ERROR][o.e.b.ElasticsearchUncaughtExcep…

python arm 基础镜像构建

之前公司运行的docker 环境是 x86 基础 上的,但是由于为兼顾国产化,要求开发对应的 ARM 版docker 镜像;但是构架机上无法连接公网,导致一些之前的包下载不了;特此记录实现的过程。 由于Python 是高级语言,…