存入 取出
生活中,有很多同种类的实体也存在着不同。一个人可能有一个座机号码,而另一个人可能只有手机号码,当然有的人还会同时拥有两者。有的人有三个邮箱地址,有的则可能一个都没有。一个西班牙人可能有两个姓,但是我们可能就只有一个姓。
面向对象编程语言之所以受到大家欢迎,其中一个原因就是对象能帮助我们去代替现实生活中的复杂的实体。
但是,如果我们就单纯地把对象存储为对象呢?相比于在电子表中的各种限制,我们应该重新着眼于使用数据。把对象本来应有的灵活性找回来。
对象(object)是特定语言(language-specific),包含数据(in-memory)的数据结构。通过网络发送或者存储它,我们需要一个标准格式来代表它。JSON (JavaScript Object Notation)这是一种可读文本的对象形式。它已经成为NoSQL世界中的标准。当一个对象被序列化到JSON时,它就被成为JSON文档了。
当然,我们不但需要存储数据,还需要能够大量快速地进行查询。虽然已经有很多的NoSQL解决方案,可以让我们将对象存储为文档,但是他们还是需要我们去考虑如何查询我们的数据以及哪些字段需要我们来做索引,以便快速搜索。
在Elasticsearch中,每一个字段都会默认被建立索引。也就是说,每一个字段都会有一个反向索引以便快速搜索。而且,与大多数其他数据库不同的是ES可以在同一个查询中使用所有的反向索引,以惊人的速度返回查询结果。