[[index-modules]]
= Index Modules

[partintro]
--
Index Modules are modules created per index and control all aspects
related to an index. Since those modules lifecycle are tied to an index,
all the relevant modules settings can be provided when creating an index
(and it is actually the recommended way to configure an index).

[float]
[[index-modules-settings]]
== Index Settings

There are specific index level settings that are not associated with any
specific module. These include:

[[index-compound-format]]`index.compound_format`::

	Should the compound file format be used (boolean setting).
	The compound format was created to reduce the number of open
	file handles when using file based storage. However, by default it is set
	to `false` as the non-compound format gives better performance. It is important
	that OS is configured to give Elasticsearch ``enough'' file handles.
    See <<file-descriptors>>.
+
Alternatively, `compound_format` can be set to a number between `0` and
`1`, where `0` means `false`, `1` means `true` and a number inbetween
represents a percentage: if the merged segment is less than this
percentage of the total index, then it is written in compound format,
otherwise it is written in non-compound format.  added[0.90.2]

[[index-compound-on-flush]]`index.compound_on_flush`::

    Should a new segment (create by indexing, not by merging) be written
    in compound format or non-compound format? Defaults to `true`.
    This is a dynamic setting.

`index.term_index_interval`::

	Set the interval between indexed terms.
	Large values cause less memory to be used by a reader / searcher, but
	slow random-access to terms. Small values cause more memory to be used
	by a reader / searcher, and speed random-access to terms. Defaults to
	`128`.

`index.term_index_divisor`::
	Subsamples which indexed terms are loaded
	into RAM. This has the same effect as `index.term_index_interval` except
	that setting must be done at indexing time while this setting can be set
	per reader / searcher. When set to N, then one in every
	N*termIndexInterval terms in the index is loaded into memory. By setting
	this to a value > 1 you can reduce memory usage, at the expense of
	higher latency when loading a TermInfo. The default value is 1. Set this
	to -1 to skip loading the terms index entirely.

`index.refresh_interval`::
	A time setting controlling how often the
	refresh operation will be executed. Defaults to `1s`. Can be set to `-1`
	in order to disable it.

--

include::index-modules/analysis.asciidoc[]

include::index-modules/allocation.asciidoc[]

include::index-modules/slowlog.asciidoc[]

include::index-modules/merge.asciidoc[]

include::index-modules/store.asciidoc[]

include::index-modules/mapper.asciidoc[]

include::index-modules/translog.asciidoc[]

include::index-modules/cache.asciidoc[]

include::index-modules/fielddata.asciidoc[]

include::index-modules/codec.asciidoc[]

include::index-modules/similarity.asciidoc[]