plugin-script.asciidoc 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. [[plugin-management]]
  2. == Plugin Management
  3. The `plugin` script is used to install, list, and remove plugins. It is
  4. located in the `$ES_HOME/bin` directory by default but it may be in a
  5. different location depending on which Elasticsearch package you installed:
  6. * {ref}/zip-targz.html#zip-targz-layout[Directory layout of `.zip` and `.tar.gz` archives]
  7. * {ref}/deb.html#deb-layout[Directory layout of Debian package]
  8. * {ref}/rpm.html#rpm-layout[Directory layout of RPM]
  9. Run the following command to get usage instructions:
  10. [source,shell]
  11. -----------------------------------
  12. sudo bin/elasticsearch-plugin -h
  13. -----------------------------------
  14. [IMPORTANT]
  15. .Running as root
  16. =====================
  17. If Elasticsearch was installed using the deb or rpm package then run
  18. `/usr/share/elasticsearch/bin/elasticsearch-plugin` as `root` so it can write to the appropriate files on disk.
  19. Otherwise run `bin/elasticsearch-plugin` as the user that owns all of the Elasticsearch
  20. files.
  21. =====================
  22. [[installation]]
  23. === Installing Plugins
  24. The documentation for each plugin usually includes specific installation
  25. instructions for that plugin, but below we document the various available
  26. options:
  27. [float]
  28. === Core Elasticsearch plugins
  29. Core Elasticsearch plugins can be installed as follows:
  30. [source,shell]
  31. -----------------------------------
  32. sudo bin/elasticsearch-plugin install [plugin_name]
  33. -----------------------------------
  34. For instance, to install the core <<analysis-icu,ICU plugin>>, just run the
  35. following command:
  36. [source,shell]
  37. -----------------------------------
  38. sudo bin/elasticsearch-plugin install analysis-icu
  39. -----------------------------------
  40. This command will install the version of the plugin that matches your
  41. Elasticsearch version and also show a progress bar while downloading.
  42. [[plugin-management-custom-url]]
  43. === Custom URL or file system
  44. A plugin can also be downloaded directly from a custom location by specifying the URL:
  45. [source,shell]
  46. -----------------------------------
  47. sudo bin/elasticsearch-plugin install [url] <1>
  48. -----------------------------------
  49. <1> must be a valid URL, the plugin name is determined from its descriptor.
  50. --
  51. Unix::
  52. To install a plugin from your local file system at `/path/to/plugin.zip`, you could run:
  53. +
  54. [source,shell]
  55. -----------------------------------
  56. sudo bin/elasticsearch-plugin install file:///path/to/plugin.zip
  57. -----------------------------------
  58. Windows::
  59. To install a plugin from your local file system at `C:\path\to\plugin.zip`, you could run:
  60. +
  61. [source,shell]
  62. -----------------------------------
  63. bin\elasticsearch-plugin install file:///C:/path/to/plugin.zip
  64. -----------------------------------
  65. +
  66. NOTE: Any path that contains spaces must be wrapped in quotes!
  67. HTTP::
  68. To install a plugin from a HTTP URL:
  69. +
  70. [source,shell]
  71. -----------------------------------
  72. sudo bin/elasticsearch-plugin install http://some.domain/path/to/plugin.zip
  73. -----------------------------------
  74. +
  75. The plugin script will refuse to talk to an HTTPS URL with an untrusted
  76. certificate. To use a self-signed HTTPS cert, you will need to add the CA cert
  77. to a local Java truststore and pass the location to the script as follows:
  78. +
  79. [source,shell]
  80. -----------------------------------
  81. sudo ES_JAVA_OPTS="-Djavax.net.ssl.trustStore=/path/to/trustStore.jks" bin/elasticsearch-plugin install https://host/plugin.zip
  82. -----------------------------------
  83. --
  84. [[listing-removing-updating]]
  85. === Listing, Removing and Updating Installed Plugins
  86. [float]
  87. === Listing plugins
  88. A list of the currently loaded plugins can be retrieved with the `list` option:
  89. [source,shell]
  90. -----------------------------------
  91. sudo bin/elasticsearch-plugin list
  92. -----------------------------------
  93. Alternatively, use the {ref}/cluster-nodes-info.html[node-info API] to find
  94. out which plugins are installed on each node in the cluster
  95. [float]
  96. === Removing plugins
  97. Plugins can be removed manually, by deleting the appropriate directory under
  98. `plugins/`, or using the public script:
  99. [source,shell]
  100. -----------------------------------
  101. sudo bin/elasticsearch-plugin remove [pluginname]
  102. -----------------------------------
  103. After a Java plugin has been removed, you will need to restart the node to
  104. complete the removal process.
  105. By default, plugin configuration files (if any) are preserved on disk; this is
  106. so that configuration is not lost while upgrading a plugin. If you wish to
  107. purge the configuration files while removing a plugin, use `-p` or `--purge`.
  108. This can option can be used after a plugin is removed to remove any lingering
  109. configuration files.
  110. [float]
  111. === Updating plugins
  112. Plugins are built for a specific version of Elasticsearch, and therefore must be reinstalled
  113. each time Elasticsearch is updated.
  114. [source,shell]
  115. -----------------------------------
  116. sudo bin/elasticsearch-plugin remove [pluginname]
  117. sudo bin/elasticsearch-plugin install [pluginname]
  118. -----------------------------------
  119. === Other command line parameters
  120. The `plugin` scripts supports a number of other command line parameters:
  121. [float]
  122. === Silent/Verbose mode
  123. The `--verbose` parameter outputs more debug information, while the `--silent`
  124. parameter turns off all output including the progress bar. The script may
  125. return the following exit codes:
  126. [horizontal]
  127. `0`:: everything was OK
  128. `64`:: unknown command or incorrect option parameter
  129. `74`:: IO error
  130. `70`:: any other error
  131. [float]
  132. === Batch mode
  133. Certain plugins require more privileges than those provided by default in core
  134. Elasticsearch. These plugins will list the required privileges and ask the
  135. user for confirmation before continuing with installation.
  136. When running the plugin install script from another program (e.g. install
  137. automation scripts), the plugin script should detect that it is not being
  138. called from the console and skip the confirmation response, automatically
  139. granting all requested permissions. If console detection fails, then batch
  140. mode can be forced by specifying `-b` or `--batch` as follows:
  141. [source,shell]
  142. -----------------------------------
  143. sudo bin/elasticsearch-plugin install --batch [pluginname]
  144. -----------------------------------
  145. [float]
  146. === Custom config directory
  147. If your `elasticsearch.yml` config file is in a custom location, you will need
  148. to specify the path to the config file when using the `plugin` script. You
  149. can do this as follows:
  150. [source,sh]
  151. ---------------------
  152. sudo ES_PATH_CONF=/path/to/conf/dir bin/elasticsearch-plugin install <plugin name>
  153. ---------------------
  154. [float]
  155. === Proxy settings
  156. To install a plugin via a proxy, you can add the proxy details to the
  157. `ES_JAVA_OPTS` environment variable with the Java settings `http.proxyHost`
  158. and `http.proxyPort` (or `https.proxyHost` and `https.proxyPort`):
  159. [source,shell]
  160. -----------------------------------
  161. sudo ES_JAVA_OPTS="-Dhttp.proxyHost=host_name -Dhttp.proxyPort=port_number -Dhttps.proxyHost=host_name -Dhttps.proxyPort=https_port_number" bin/elasticsearch-plugin install analysis-icu
  162. -----------------------------------
  163. Or on Windows:
  164. [source,shell]
  165. ------------------------------------
  166. set ES_JAVA_OPTS="-Dhttp.proxyHost=host_name -Dhttp.proxyPort=port_number -Dhttps.proxyHost=host_name -Dhttps.proxyPort=https_port_number"
  167. bin\elasticsearch-plugin install analysis-icu
  168. ------------------------------------
  169. === Plugins directory
  170. The default location of the `plugins` directory depends on which package you install:
  171. * {ref}/zip-targz.html#zip-targz-layout[Directory layout of `.zip` and `.tar.gz` archives]
  172. * {ref}/deb.html#deb-layout[Directory layout of Debian package]
  173. * {ref}/rpm.html#rpm-layout[Directory layout of RPM]
  174. [float]
  175. === Mandatory Plugins
  176. If you rely on some plugins, you can define mandatory plugins by adding
  177. `plugin.mandatory` setting to the `config/elasticsearch.yml` file, for
  178. example:
  179. [source,yaml]
  180. --------------------------------------------------
  181. plugin.mandatory: analysis-icu,lang-js
  182. --------------------------------------------------
  183. For safety reasons, a node will not start if it is missing a mandatory plugin.