# RollOver API - Add Mapping

**URL:** <https://discuss.elastic.co/t/rollover-api-add-mapping/164060>\
**Category:** Elasticsearch\
**Created:** [January 14, 2019, 12:07am UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060 "2019-01-14T00:07:00Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Fabricio\_Archanjo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fabricio_archanjo/32/2112_2.png) [@Fabricio\_Archanjo](https://discuss.elastic.co/u/Fabricio_Archanjo)\
**Post date:** [January 14, 2019, 12:07am UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060/1 "2019-01-14T00:07:00Z")

</div>

Hi everyone,

I'm trying to create a service to rollover an index to me, but before to rollover I have to copy my setting and mapping to add a new index to be created.

Basically:  
I'm getting a primary mapping:

```
GetMappingsResponse response = client.admin()
    .indices()
    .prepareGetMappings(getIndexFormat(roll.getAlias()))
    .execute().actionGet();

```

Then,

```
response.getMappings().get(getIndexFormat(roll.getAlias()))
        .forEach(objectCursor -> {
            try {
                objectCursor.value.getSourceAsMap().entrySet()
                        .forEach(entry -> {
                            builder.mapping(objectCursor.value.type(), String.valueOf(entry.getValue()));
                        });
            } catch (Exception e) {
                logger.warn("addMapping", e);
            }
        });

```

This is my Request RollOver builder:

```
RolloverRequestBuilder builder = client.admin().indices()
.prepareRolloverIndex(roll.getAlias())
.addMaxIndexDocsCondition(roll.getDocument())
.dryRun(true)
.addMaxIndexSizeCondition(new ByteSizeValue(roll.getSize(),
        roll.getUnit()))
.waitForActiveShards(1);

```

I know its a wrong way, but rollover builder api only accept (String type, String source), how can I convert it to (String type, String source) ?

I have tried too many things and always getting.

> mapping source must be pairs of fieldnames and properties definition

---

<div class="post-metadata">

**Author:** ![Fabricio\_Archanjo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fabricio_archanjo/32/2112_2.png) [@Fabricio\_Archanjo](https://discuss.elastic.co/u/Fabricio_Archanjo)\
**Post date:** [January 14, 2019, 5:42am UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060/2 "2019-01-14T05:42:26Z")

</div>

someone?

---

<div class="post-metadata">

**Author:** ![Christian\_Dahlqvist](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/christian_dahlqvist/32/4617_2.png) [@Christian\_Dahlqvist](https://discuss.elastic.co/u/Christian_Dahlqvist)\
**Post date:** [January 14, 2019, 5:44am UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060/3 "2019-01-14T05:44:09Z")

</div>

I would recommend applying mappings through an [index template](https://www.elastic.co/guide/en/elasticsearch/reference/6.5/indices-templates.html) instead. That way it will automatically be applied when rollover generates a new index. This is shown in [this blog post](https://www.elastic.co/blog/managing-time-based-indices-efficiently).

---

<div class="post-metadata">

**Author:** ![Fabricio\_Archanjo](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/fabricio_archanjo/32/2112_2.png) [@Fabricio\_Archanjo](https://discuss.elastic.co/u/Fabricio_Archanjo)\
**Post date:** [January 14, 2019, 10:03pm UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060/4 "2019-01-14T22:03:30Z")

</div>

> <https://github.com/elastic/elasticsearch/issues/37400>

---

<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:** [February 11, 2019, 10:03pm UTC](https://discuss.elastic.co/t/rollover-api-add-mapping/164060/5 "2019-02-11T22:03:43Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
