[[mapping-attachment-type]] === Attachment Type The `attachment` type allows to index different "attachment" type field (encoded as `base64`), for example, Microsoft Office formats, open document formats, ePub, HTML, and so on (full list can be found http://lucene.apache.org/tika/0.10/formats.html[here]). The `attachment` type is provided as a https://github.com/elasticsearch/elasticsearch-mapper-attachments[plugin extension]. The plugin is a simple zip file that can be downloaded and placed under `$ES_HOME/plugins` location. It will be automatically detected and the `attachment` type will be added. Note, the `attachment` type is experimental. Using the attachment type is simple, in your mapping JSON, simply set a certain JSON element as attachment, for example: [source,js] -------------------------------------------------- { "person" : { "properties" : { "my_attachment" : { "type" : "attachment" } } } } -------------------------------------------------- In this case, the JSON to index can be: [source,js] -------------------------------------------------- { "my_attachment" : "... base64 encoded attachment ..." } -------------------------------------------------- Or it is possible to use more elaborated JSON if content type or resource name need to be set explicitly: [source,js] -------------------------------------------------- { "my_attachment" : { "_content_type" : "application/pdf", "_name" : "resource/name/of/my.pdf", "content" : "... base64 encoded attachment ..." } } -------------------------------------------------- The `attachment` type not only indexes the content of the doc, but also automatically adds meta data on the attachment as well (when available). The metadata supported are: `date`, `title`, `author`, and `keywords`. They can be queried using the "dot notation", for example: `my_attachment.author`. Both the meta data and the actual content are simple core type mappers (string, date, ...), thus, they can be controlled in the mappings. For example: [source,js] -------------------------------------------------- { "person" : { "properties" : { "file" : { "type" : "attachment", "fields" : { "file" : {"index" : "no"}, "date" : {"store" : true}, "author" : {"analyzer" : "myAnalyzer"} } } } } } -------------------------------------------------- In the above example, the actual content indexed is mapped under `fields` name `file`, and we decide not to index it, so it will only be available in the `_all` field. The other fields map to their respective metadata names, but there is no need to specify the `type` (like `string` or `date`) since it is already known. The plugin uses http://lucene.apache.org/tika/[Apache Tika] to parse attachments, so many formats are supported, listed http://lucene.apache.org/tika/0.10/formats.html[here].