在应用程序中对象很少只是一个简单的键和值的列表。通常,它们拥有更复杂的数据结构,可能包括日期、地理信息、其他对象或者数组等。
也许有一天你想把这些对象存储在数据库中。使用关系型数据库的行和列存储,这相当于是把一个表现力丰富的对象挤压到一个非常大的电子表格中。
Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档_。在 Elasticsearch 中,你 对文档进行索引、检索、排序和过滤–而不是对行列数据,这也是 Elasticsearch 能支持复杂全文检索的原因。
考虑一下这个 JSON 文档,它代表了一个 user 对象:
{
"email": "[email protected]",
"first_name": "John",
"last_name": "Smith",
"info": {
"bio": "Eco-warrior and defender of the weak",
"age": 25,
"interests": [ "dolphins", "whales" ]
},
"join_date": "2014/05/01"
}
在 Elasticsearch 中将对象转化为 JSON 并做索引要比在一个扁平的表结构中做相同的事情简单的多。