The http.type parameter in elasticsearch.yml defines which http transport should be used to process http requests. The default transport that comes with elasticsearch is netty. The elasticsearch-jetty plugin adds two additional options: JettyHttpServerTransportModule and FilterHttpTransportModule.
JettyHttpServerTransportModule wraps jetty server and allows elasticsearch to use it as HttpServerTransport. As you know, the jetty server by itself doesn't know how to process any requests - it needs to be configured. By default, JettyHttpServerTransportModule configures jetty using the jetty.xml file. The supplied jetty.xml file contains the following stack of handlers:
GzipHandler (from jetty - handles gzip compression)
RestConstraintSecurityHandler (from elasticsearch-jetty - handles authorization)
JettyHttpServerTransportHandler (from elasticsearch-jetty - dispatches http requests to elasticsearch)
Jetty handles http requests and passes them to the top handler in the stack. Each handler processes requests and then passes them to the underlying handler. When requests reach JettyHttpServerTransportHandler, it dispatches them to elasticsearch.
FilterHttpTransportModule wraps another HttpServerTransport. It can wrap JettyHttpServerTransportModule (that's used by default) or NettyHttpServerTransportModule. Wrapping underlying HttpServerTransport allows us to intercept http requests after they are parsed but before they are dispatched to elaticsearch, and pass them through a series of filters. FilterHttpTransportModule accepts a stack of filters defined in the sonian.elasticsearch.http.filter parameter in elasticsearch.yml file. We are using several filters in our deployment including logging filter (LoggingFilterHttpServerAdapter) that logs all http requests sent to elasticsearch.