# Documentation for plugin authoring?

**URL:** <https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813>\
**Category:** Elasticsearch\
**Created:** [July 7, 2011, 7:07pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813 "2011-07-07T19:07:20Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Matthew\_A\_Brown](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/matthew_a_brown/32/2699_2.png) [@Matthew\_A\_Brown](https://discuss.elastic.co/u/Matthew_A_Brown)\
**Post date:** [July 7, 2011, 7:07pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/1 "2011-07-07T19:07:20Z")

</div>

Hi all,

I'm new to ElasticSearch but come from a fair amount of experience  
with another HTTP wrapper for Lucene which shall remain nameless. I  
gather from earlier mailing list posts that ES has a plugin  
architecture, but I can't for the life of me find a shred of  
documentation on it. In particular, I'm looking for basics like what  
endpoints in the HTTP API are available to plugin authors, basic  
plugin configuration, etc. Is there anything out there someone can  
point me to?

Cheers!  
Mat

---

<div class="post-metadata">

**Author:** ![Clinton\_Gormley](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@Clinton\_Gormley](https://discuss.elastic.co/u/Clinton_Gormley)\
**Post date:** [July 8, 2011, 7:45am UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/2 "2011-07-08T07:45:03Z")

</div>

Hi Matt

> I'm new to Elasticsearch but come from a fair amount of experience  
> with another HTTP wrapper for Lucene which shall remain nameless. I  
> gather from earlier mailing list posts that ES has a plugin  
> architecture, but I can't for the life of me find a shred of  
> documentation on it. In particular, I'm looking for basics like what  
> endpoints in the HTTP API are available to plugin authors, basic  
> plugin configuration, etc. Is there anything out there someone can  
> point me to?

I think that you're thinking of plugins in the wrong way. They are not  
the equivalent of solr's request handlers. They are used to extend the  
core functionality of Elasticsearch itself, eg adding thrift transport,  
or scripting via javascript etc

Unlike solr, you send your search requests directly to Elasticsearch,  
either over HTTP (using one of the many APIs that are available for eg  
Perl, Ruby, Python, PHP etc) or via the Java API, which speaks  
Elasticsearch's own protocol.

> **[Elasticsearch Platform — Find real-time answers at scale](https://www.elastic.co)**
>
> Power insights and outcomes with the Elasticsearch Platform and AI. See into your data and find answers that matter with enterprise solutions designed to help you build, observe, and protect. Try Elasticsearch free today.

clint

---

<div class="post-metadata">

**Author:** ![Matthew\_A\_Brown](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/matthew_a_brown/32/2699_2.png) [@Matthew\_A\_Brown](https://discuss.elastic.co/u/Matthew_A_Brown)\
**Post date:** [July 8, 2011, 12:38pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/3 "2011-07-08T12:38:03Z")

</div>

Hi Clinton,

Thanks for the response. So an example of something I was hoping to  
use the plugin architecture for is to add support equivalent to Solr's  
TermsComponent -- to expose a bit of Lucene functionality that ES  
currently doesn't. Are plugins not the correct avenue to take for  
something like that? If not, does ES give me an option there, other  
than patching the project itself?

Thanks!  
Mat

On Fri, Jul 8, 2011 at 03:45, Clinton Gormley [clinton@iannounce.co.uk](mailto:clinton@iannounce.co.uk) wrote:

> Hi Matt
> 
> > I'm new to Elasticsearch but come from a fair amount of experience  
> > with another HTTP wrapper for Lucene which shall remain nameless. I  
> > gather from earlier mailing list posts that ES has a plugin  
> > architecture, but I can't for the life of me find a shred of  
> > documentation on it. In particular, I'm looking for basics like what  
> > endpoints in the HTTP API are available to plugin authors, basic  
> > plugin configuration, etc. Is there anything out there someone can  
> > point me to?
> 
> I think that you're thinking of plugins in the wrong way. They are not  
> the equivalent of solr's request handlers. They are used to extend the  
> core functionality of Elasticsearch itself, eg adding thrift transport,  
> or scripting via javascript etc
> 
> Unlike solr, you send your search requests directly to Elasticsearch,  
> either over HTTP (using one of the many APIs that are available for eg  
> Perl, Ruby, Python, PHP etc) or via the Java API, which speaks  
> Elasticsearch's own protocol.
> 
> [Elasticsearch Platform — Find real-time answers at scale | Elastic](http://www.elasticsearch.org/guide/appendix/clients.html)
> 
> clint

---

<div class="post-metadata">

**Author:** ![Clinton\_Gormley](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@Clinton\_Gormley](https://discuss.elastic.co/u/Clinton_Gormley)\
**Post date:** [July 8, 2011, 12:48pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/4 "2011-07-08T12:48:38Z")

</div>

Hi Matt

> Thanks for the response. So an example of something I was hoping to  
> use the plugin architecture for is to add support equivalent to Solr's  
> TermsComponent -- to expose a bit of Lucene functionality that ES  
> currently doesn't. Are plugins not the correct avenue to take for  
> something like that? If not, does ES give me an option there, other  
> than patching the project itself?

Plugins probably are the right place to do this, but I'm not a Java  
programmer, so take anything I say with a pinch of salt.

From what I've seen though, exposing these things is not always as  
simple as it may seem, as it has to take the distributed nature of ES  
into account. YMMV.

See this thread for more:

[http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html](http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html)

clint

---

<div class="post-metadata">

**Author:** ![Matthew\_A\_Brown](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/matthew_a_brown/32/2699_2.png) [@Matthew\_A\_Brown](https://discuss.elastic.co/u/Matthew_A_Brown)\
**Post date:** [July 8, 2011, 1:03pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/5 "2011-07-08T13:03:43Z")

</div>

Thanks Clint!

On Fri, Jul 8, 2011 at 08:48, Clinton Gormley [clinton@iannounce.co.uk](mailto:clinton@iannounce.co.uk) wrote:

> Hi Matt
> 
> > Thanks for the response. So an example of something I was hoping to  
> > use the plugin architecture for is to add support equivalent to Solr's  
> > TermsComponent -- to expose a bit of Lucene functionality that ES  
> > currently doesn't. Are plugins not the correct avenue to take for  
> > something like that? If not, does ES give me an option there, other  
> > than patching the project itself?
> 
> Plugins probably are the right place to do this, but I'm not a Java  
> programmer, so take anything I say with a pinch of salt.
> 
> From what I've seen though, exposing these things is not always as  
> simple as it may seem, as it has to take the distributed nature of ES  
> into account. YMMV.
> 
> See this thread for more:
> 
> [http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html](http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html)
> 
> clint

---

<div class="post-metadata">

**Author:** ![kimchy](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/kimchy/32/44952_2.png) [@kimchy](https://discuss.elastic.co/u/kimchy)\
**Post date:** [July 8, 2011, 8:54pm UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/6 "2011-07-08T20:54:28Z")

</div>

Hi Matt,

You can write something like the terms API as a plugin. The design of elasticsearch is quite open, basically, any API could have been written as a plugin). You can bind your own transport APIs, own REST endpoints, serialization, and so on. "Getting" those is also simple, as its all wired using Guice.

The thing that is not that simple, at least at the beginning, is getting familiar enough with the elasticsearch codebase to understand how all of this fits....

-shay.banon

On Friday, July 8, 2011 at 4:03 PM, Matthew A. Brown wrote:

> Thanks Clint!
> 
> On Fri, Jul 8, 2011 at 08:48, Clinton Gormley \<[clinton@iannounce.co.uk](mailto:clinton@iannounce.co.uk) ([mailto:clinton@iannounce.co.uk](mailto:clinton@iannounce.co.uk))\> wrote:
> 
> > Hi Matt
> > 
> > > Thanks for the response. So an example of something I was hoping to  
> > > use the plugin architecture for is to add support equivalent to Solr's  
> > > TermsComponent -- to expose a bit of Lucene functionality that ES  
> > > currently doesn't. Are plugins not the correct avenue to take for  
> > > something like that? If not, does ES give me an option there, other  
> > > than patching the project itself?
> > 
> > Plugins probably are the right place to do this, but I'm not a Java  
> > programmer, so take anything I say with a pinch of salt.
> > 
> > From what I've seen though, exposing these things is not always as  
> > simple as it may seem, as it has to take the distributed nature of ES  
> > into account. YMMV.
> > 
> > See this thread for more:
> > 
> > [http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html](http://elasticsearch-users.115913.n3.nabble.com/Auto-suggest-with-elasticsearch-tp3136724p3136724.html)
> > 
> > clint

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [July 6, 2017, 4:01am UTC](https://discuss.elastic.co/t/documentation-for-plugin-authoring/4813/7 "2017-07-06T04:01:12Z")

</div>


