One of the main features of ElasticSearch is the possibility to extend it with plugins. Plugins extend ElasticSearch features and functionalities in several ways. There are two kinds of plugins:
Site plugins: These are used to serve static contents in their entry points. They are mainly used to create management application: monitoring and administration of a cluster.
Binary plugins: These are jar files that contain application code. They are used for:
Rivers (plugins that allow importing data from DBMS or other sources)
ScriptEngine (JavaScript, Python, Scala, and Ruby)
Custom analyzers and tokenizers
REST entry points
Supporting new protocols (Thrift, memcache, and so on)
Supporting new storages (Hadoop)