Why plugins can't be added dynamically into ES

Just wondering what is the ES internal design like that makes it difficult to install a plugin dynamically?

Why is it that we always have to restart the nodes?

Elasticsearch does a lot of initialization when a node starts. In particular, note only are plugins constructed during Node construction, but all of the services which control node behavior, eg ClusterService, IndicesService, ScriptService, etc are constructed based on the builtin and plugin supplied implementations of relevant objects. Thus, once the Node. has been constructed, there is no easy way to load a plugin without reconstructing the Node. While this would be a great thing to have long term, the unfortunate truth is we are a very long way away from having hot reloadability. Essentially all internal services within the node would need to have the objects they operate on dynamically loadable (eg ScriptService being able to add/remove ScriptEngine implementations dynamically).

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.