Add plugins from classpath in embedded Elasticsearch client node

Hi Clinton, thanks for the very clear answer. My use case seems somewhat simpler -and more common- than the use cases mentioned before, but I seem not to be able to find any documentation or help on this.

In production, we install our plugins with the bin/plugin script as we have always done, and the applications connect either via HTTP or using the transport client. With ES1.x we had also set up a few tests in our Java code base that would perform some indexing and search operations over test data, using the production settings and mappings. As we use a custom token filter in production, I obviously need the same token filter to be available to the embedded instance that is started while testing.

With ES1, I only needed to add the plugin JAR to the classpath. Is there no simple way to do this with ES2? How can I provide the plugin to the embedded node that, at the moment, is started like this?

        Settings.Builder elasticsearchSettings = Settings.settingsBuilder()
				.put("http.enabled", "false")
				.put("path.home", homeDirectory);


		node = nodeBuilder()
				.local(true)
				.settings(elasticsearchSettings.build())
				.node();

Should I somehow provide a plugin directory containing (unpacked? how?) plugins to the embedded node?