elasticsearch基础的概念-文档

什么是文档?

程序中大多的实体或对象可以被序列化为包含键值对的JSON对象,键(key)字段(field)属性(property)的名字,值(value)能够是字符串、数字、布尔类型、另外一个对象、值数组或者其余特殊类型,好比表示日期的字符串或者表示地理位置的对象。web

{
    "name":         "John Smith",
    "age":          42,
    "confirmed":    true,
    "join_date":    "2014-06-01",
    "home": {
        "lat":      51.5,
        "lon":      0.1
    },
    "accounts": [
        {
            "type": "facebook",
            "id":   "johnsmith"
        },
        {
            "type": "twitter",
            "id":   "johnsmith"
        }
    ]
}

一般,咱们能够认为对象(object)文档(document)是等价相通的。不过,他们仍是有所差异:对象(Object)是一个JSON结构体——相似于哈希、hashmap、字典或者关联数组;对象(Object)中还可能包含其余对象(Object)。 在Elasticsearch中,文档(document)这个术语有着特殊含义。它特指最顶层结构或者根对象(root object)序列化成的JSON数据(以惟一ID标识并存储于Elasticsearch中)。数据库

文档元数据

一个文档不仅有数据。它还包含了元数据(metadata)——关于文档的信息。三个必须的元数据节点是:数组

节点 说明
_index 文档存储的地方
_type 文档表明的对象的类
_id 文档的惟一标识

_index

索引(index)相似于关系型数据库里的“数据库”——它是咱们存储和索引关联数据的地方。数据结构

提示:app

事实上,咱们的数据被存储和索引在分片(shards)中,索引只是一个把一个或多个分片分组在一块儿的逻辑空间。然而,这只是一些内部细节——咱们的程序彻底不用关心分片。对于咱们的程序而言,文档存储在索引(index)中。剩下的细节由Elasticsearch关心既可。spa

咱们将会在《索引管理》章节中探讨如何建立并管理索引,但如今,咱们将让Elasticsearch为咱们建立索引。咱们惟一须要作的仅仅是选择一个索引名。这个名字必须是所有小写,不能如下划线开头,不能包含逗号。让咱们使用website作为索引名。code

_type

在应用中,咱们使用对象表示一些“事物”,例如一个用户、一篇博客、一个评论,或者一封邮件。每一个对象都属于一个类(class),这个类定义了属性或与对象关联的数据。user类的对象可能包含姓名、性别、年龄和Email地址。对象

在关系型数据库中,咱们常常将相同类的对象存储在一个表里,由于它们有着相同的结构。同理,在Elasticsearch中,咱们使用相同类型(type)的文档表示相同的“事物”,由于他们的数据结构也是相同的。blog

每一个类型(type)都有本身的映射(mapping)或者结构定义,就像传统数据库表中的列同样。全部类型下的文档被存储在同一个索引下,可是类型的映射(mapping)会告诉Elasticsearch不一样的文档如何被索引。 咱们将会在《映射》章节探讨如何定义和管理映射,可是如今咱们将依赖Elasticsearch去自动处理数据结构。索引

_type的名字能够是大写或小写,不能包含下划线或逗号。咱们将使用blog作为类型名。

_id

id仅仅是一个字符串,它与_index_type组合时,就能够在Elasticsearch中惟一标识一个文档。当建立一个文档,你能够自定义_id,也可让Elasticsearch帮你自动生成。

其它元数据

还有一些其它的元数据,咱们将在《映射》章节探讨。使用上面提到的元素,咱们已经能够在Elasticsearch中存储文档并经过ID检索——换言说,把Elasticsearch作为文档存储器使用了。

相关文章
相关标签/搜索