[role="xpack"]
[[index-mgmt]]
== Index management

{kib}'s *Index Management* features are an easy, convenient way to manage your
cluster's indices, <<data-streams,data streams>>, and <<index-templates,index
templates>>. Practicing good index management ensures your data is stored
correctly and in the most cost-effective way possible.

[discrete]
[[index-mgmt-wyl]]
=== What you'll learn

You'll learn how to:

* View and edit index settings.
* View mappings and statistics for an index.
* Perform index-level operations, such as refreshes and freezes.
* View and manage data streams.
* Create index templates to automatically configure new data streams and indices.

[discrete]
[[index-mgm-req-permissions]]
=== Required permissions

If you use {es} {security-features}, the following
<<security-privileges,security privileges>> are required:

* The `monitor` cluster privilege to access {kib}'s *Index Management* features.
* The `view_index_metadata` and `manage` index privileges to view a data stream
or index's data.
* The `manage_index_templates` cluster privilege to manage index templates.

To add these privileges in {kib}, go to *Stack Management > Security > Roles*.

[discrete]
[[view-edit-indices]]
=== View and edit indices

Open {kib}'s main menu and click *Stack Management > Index Management*.

[role="screenshot"]
image::images/index-mgmt/management_index_labels.png[Index Management UI]

The *Index Management* page contains an overview of your indices.
Badges indicate if an index is <<frozen-indices,frozen>>, a
<<ccr-put-follow,follower index>>, or a
<<rollup-get-rollup-index-caps,rollup index>>.

Clicking a badge narrows the list to only indices of that type.
You can also filter indices using the search bar.

You can drill down into each index to investigate the index
<<index-modules-settings,settings>>, <<mapping,mapping>>, and statistics.
From this view, you can also edit the index settings.

[role="screenshot"]
image::images/index-mgmt/management_index_details.png[Index Management UI]

[float]
=== Perform index-level operations

Use the *Manage* menu to perform index-level operations. This menu
is available in the index details view, or when you select the checkbox of one or more
indices on the overview page. The menu includes the following actions:

* <<indices-close,*Close index*>>
* <<indices-forcemerge,*Force merge index*>>
* <<indices-refresh,*Refresh index*>>
* <<indices-flush,*Flush index*>>
* <<freeze-index-api,*Freeze index*>>
* <<indices-delete-index,*Delete index*>>
* *Add* <<set-up-lifecycle-policy,*lifecycle policy*>>

[float]
[[manage-data-streams]]
=== Manage data streams

The *Data Streams* view lists your data streams and lets you examine or delete
them.

To view more information about a data stream, such as its generation or its
current index lifecycle policy, click the stream's name.

[role="screenshot"]
image::images/index-mgmt/management_index_data_stream_stats.png[Data stream details]

To view information about the stream's backing indices, click the number in the
*Indices* column.

[role="screenshot"]
image::images/index-mgmt/management_index_data_stream_backing_index.png[Backing index]

[float]
[[manage-index-templates]]
=== Manage index templates

The *Index Templates* view lists your templates and lets you examine,
edit, clone, and delete them. Changes made to an index template do not
affect existing indices.

[role="screenshot"]
image::images/index-mgmt/management-index-templates.png[Index templates]

If you don't have any templates, you can create one using the *Create template*
wizard.

[float]
==== Try it: Create an index template

In this tutorial, you’ll create an index template and use it to configure two
new indices.

*Step 1. Add a name and index pattern*

. In the *Index Templates* view, open the *Create template* wizard.
+
[role="screenshot"]
image::images/index-mgmt/management_index_create_wizard.png[Create wizard]

. In the *Name* field, enter `my-index-template`.

. Set *Index pattern* to `my-index-*` so the template matches any index
with that index pattern.

. Leave *Data Stream*, *Priority*, *Version*, and *_meta field* blank or as-is.

*Step 2. Add settings, mappings, and index aliases*

. Add <<indices-component-template,component templates>> to your index template.
+
Component templates are pre-configured sets of mappings, index settings, and
index aliases you can reuse across multiple index templates. Badges indicate
whether a component template contains mappings (*M*), index settings (*S*),
index aliases (*A*), or a combination of the three.
+
Component templates are optional. For this tutorial, do not add any component
templates.
+
[role="screenshot"]
image::images/index-mgmt/management_index_component_template.png[Component templates page]

. Define index settings. These are optional. For this tutorial, leave this
section blank.

. Define a mapping that contains an <<object,object>> field named `geo` with a
child <<geo-point,geo-point>> field named `coordinates`:
+
[role="screenshot"]
image::images/index-mgmt/management-index-templates-mappings.png[Mapped fields page]
+
Alternatively, you can click the *Load JSON* link and define the mapping as JSON:
+
[source,js]
----
{
  "properties": {
    "geo": {
      "properties": {
        "coordinates": {
          "type": "geo_point"
        }
      }
    }
  }
}
----
// NOTCONSOLE
+
You can create additional mapping configurations in the *Dynamic templates* and
*Advanced options* tabs. For this tutorial, do not create any additional
mappings.

. Define an index alias named `my-index`:
+
[source,js]
----
{
  "my-index": {}
}
----
// NOTCONSOLE

. On the review page, check the summary. If everything looks right, click
*Create template*.

*Step 3. Create new indices*

You’re now ready to create new indices using your index template.

. Index the following documents to create two indices:
`my-index-000001` and `my-index-000002`.
+
[source,console]
----
POST /my-index-000001/_doc
{
  "@timestamp": "2019-05-18T15:57:27.541Z",
  "ip": "225.44.217.191",
  "extension": "jpg",
  "response": "200",
  "geo": {
    "coordinates": {
      "lat": 38.53146222,
      "lon": -121.7864906
    }
  },
  "url": "https://media-for-the-masses.theacademyofperformingartsandscience.org/uploads/charles-fullerton.jpg"
}

POST /my-index-000002/_doc
{
  "@timestamp": "2019-05-20T03:44:20.844Z",
  "ip": "198.247.165.49",
  "extension": "php",
  "response": "200",
  "geo": {
    "coordinates": {
      "lat": 37.13189556,
      "lon": -76.4929875
    }
  },
  "memory": 241720,
  "url": "https://theacademyofperformingartsandscience.org/people/type:astronauts/name:laurel-b-clark/profile"
}
----

. Use the <<indices-get-index,get index API>> to view the configurations for the
new indices. The indices were configured using the index template you created
earlier.
+
[source,console]
--------------------------------------------------
GET /my-index-000001,my-index-000002
--------------------------------------------------
// TEST[continued]
