Elasticsearch通过插件来增强其个性化功能需求。他们可以添加自定义映射类型,自定义分析器,本地脚本,自定义发现等等。在Elasticsearch中,有三种类型的插件:
java插件:这些插件只包含jar文件,并且必须安装在集群中的每个节点上。安装后,每个节点必须重新启动后才生效。
站点插件:这些插件包含了静态的Web内容,如JavaScript,HTML和CSS文件,站点插件只需要在一个节点上安装,并且不需要重新启动就可以使用。站点插件通过url进行访问,例如:http://localhost:9200/_plugin/[plugin name]。
混合插件:混合插件是即包含jar文件又站点插件。
插件管理
插件是通过脚本来进行管理的,可以安装插件,查询插件和删除插件。正常情况下插件位于$ES_HOME/bin下,通过rpm等安装的位置可能会不同。可以通命令获取插件帮助:在目录下执行,plugin -h
plugin -hNAME plugin - Manages pluginsSYNOPSIS pluginDESCRIPTION Manage pluginsCOMMANDS install Install a plugin remove Remove a plugin list List installed pluginsNOTES [*] For usage help on specific commands please type "plugin -h"
注意:linux需要用管理员来运行,比如sudo plugin -h
插件安装:
每种插件都会有插件安装文档,但大多数情况下,插件安装有以下几种方式:
核心插件:
sudo bin/plugin install [plugin_name]
例如安装Lucenea icu插件。sudo bin/plugin install analysis-icu,这样就会按照合适的版本到Elasticsearch中。
非核心插件:非核心插件可以是官方提供的,也可以是社区提供的,可以从官方,Maven或者GitHub中下载安装。
sudo bin/plugin install [org]/[user|component]/[version]
例如,安装github上的插件,plugin install lmenezes/elasticsearch-kopf
插件会尝试先到官方去下载,如果没有找到会到maven.com中去下载,如果在没有找到回到github中去下载。脚本还是非常智能的。
当我们从直接maven中央库中安装时可以直接使用下面的方式,最后的版本号是必须要写的。
plugin install org.elasticsearch.plugin/mapper-attachments/3.0.0
从自定义网址或者本地安装:plugin install [url] ,例如,在本地文件系统中安装一个插件,可以运行:plugin install file:///path/to/plugin.zip。
插件脚本会拒绝从一个不受信任的证书的https网站安装。使用HTTPS证书自签名,需要添加的CA证书到本地信任库,可以通过java脚本添加:plugin -Djavax.net.ssl.trustStore=/path/to/trustStore.jks install https://...
查询插件:plugin list
删除插件:plugin remove [pluginname],jar插件删除后要重启。
Silent/Verbose参数:
当使用--verbose参数输出更多的调试信息, 当使用--silent参数时可以关闭所有输出。该脚本可以返回下面的代码:
0:一切都好
64:未知命令或不正确的选项参数
74:输入输出错误
70:任何其他错误
自定义配置目录:如果elasticsearch.yml配置文件在一个自定义的位置,在使用插件脚本时需要指定配置文件的路径,例如:plugin -Des.path.conf=/path/to/custom/config/dir install <plugin name>,您可以设置conf_dir环境变量来指定自定义配置文件的路径。
超时设置:可以指定超时时间,例如等待30秒,plugin install mobz/elasticsearch-head --timeout 30s。当设置为0时一直等待。
代理设置:可以通过代理安装插件,Java的设置是proxyHost和proxyPort。例如:在Unix中
plugin install mobz/elasticsearch-head -DproxyHost=host_name -DproxyPort=port_number
在Windows中,需要添加参数到java_opts环境变量,例如:
set JAVA_OPTS="-DproxyHost=host_name -DproxyPort=port_number"
plugin install mobz/elasticsearch-head
自定义插件目录:插件目录可以在配置文件中elasticsearch.yml进行修改,参数:path.plugins: /path/to/custom/plugins/dir。
强制插件:可以在配置文件中elasticsearch.yml中添加plugin.mandatory来设置必须要安装的插件,例如:plugin.mandatory: mapper-attachments,lang-python。注意:出于安全的原因,如果缺少一个强制插件,该节点将不会启动成功。
赛克蓝德(secisland)后续会逐步对Elasticsearch的最新版本的各项功能进行分析,近请期待。也欢迎加入secisland公众号进行关注。