What is Object Type in Elasticsearch: Explanation and Example
object type is used to store JSON objects as fields within a document. It allows you to index nested key-value pairs inside a single field, enabling structured data storage and search.How It Works
Think of the object type in Elasticsearch like a folder inside a filing cabinet. Instead of just storing a simple value like a name or number, it holds a set of related information grouped together. This group is a JSON object with keys and values, similar to a mini-record inside your main document.
When you index a document with an object field, Elasticsearch treats the keys inside that object as sub-fields. This means you can search, filter, or aggregate based on those nested keys just like normal fields. It helps keep related data organized and searchable without flattening everything into one big list.
Example
This example shows how to define an object type field called address with sub-fields for street, city, and zipcode. Then it indexes a document with that structure.
PUT /my_index
{
"mappings": {
"properties": {
"name": { "type": "text" },
"address": {
"type": "object",
"properties": {
"street": { "type": "text" },
"city": { "type": "keyword" },
"zipcode": { "type": "keyword" }
}
}
}
}
}
PUT /my_index/_doc/1
{
"name": "John Doe",
"address": {
"street": "123 Elm St",
"city": "Springfield",
"zipcode": "12345"
}
}
GET /my_index/_search
{
"query": {
"match": { "address.city": "Springfield" }
}
}When to Use
Use the object type when you want to store structured data inside a single field that has multiple related parts. For example, addresses, user profiles, or product specifications often have multiple attributes that belong together.
This type is helpful when you want to keep your data organized and searchable by parts of the object without creating separate documents or flattening all fields. It works well for moderate nesting but is not ideal for deeply nested or complex relationships, where the nested type might be better.
Key Points
- The
objecttype stores JSON objects as fields inside a document. - It allows searching and filtering on sub-fields within the object.
- Good for grouping related data like addresses or profiles.
- Not suitable for deeply nested or complex arrays of objects.