_meta field

edit

A mapping type can have custom meta data associated with it. These are not used at all by Elasticsearch, but can be used to store application-specific metadata, such as the class that a document belongs to:

resp = client.indices.create(
    index="my-index-000001",
    mappings={
        "_meta": {
            "class": "MyApp::User",
            "version": {
                "min": "1.0",
                "max": "1.3"
            }
        }
    },
)
print(resp)
response = client.indices.create(
  index: 'my-index-000001',
  body: {
    mappings: {
      _meta: {
        class: 'MyApp::User',
        version: {
          min: '1.0',
          max: '1.3'
        }
      }
    }
  }
)
puts response
const response = await client.indices.create({
  index: "my-index-000001",
  mappings: {
    _meta: {
      class: "MyApp::User",
      version: {
        min: "1.0",
        max: "1.3",
      },
    },
  },
});
console.log(response);
PUT my-index-000001
{
  "mappings": {
    "_meta": { 
      "class": "MyApp::User",
      "version": {
        "min": "1.0",
        "max": "1.3"
      }
    }
  }
}

This _meta info can be retrieved with the GET mapping API.

The _meta field can be updated on an existing type using the update mapping API:

resp = client.indices.put_mapping(
    index="my-index-000001",
    meta={
        "class": "MyApp2::User3",
        "version": {
            "min": "1.3",
            "max": "1.5"
        }
    },
)
print(resp)
response = client.indices.put_mapping(
  index: 'my-index-000001',
  body: {
    _meta: {
      class: 'MyApp2::User3',
      version: {
        min: '1.3',
        max: '1.5'
      }
    }
  }
)
puts response
const response = await client.indices.putMapping({
  index: "my-index-000001",
  _meta: {
    class: "MyApp2::User3",
    version: {
      min: "1.3",
      max: "1.5",
    },
  },
});
console.log(response);
PUT my-index-000001/_mapping
{
  "_meta": {
    "class": "MyApp2::User3",
    "version": {
      "min": "1.3",
      "max": "1.5"
    }
  }
}