zhouandtao 发表于 2017-5-20 11:43:04

Elasticsearch学习总结(三)

  一、对索引的理解
  1.在Elasticsearch中存储数据的行为就叫做索引(indexing)
         在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型数据库:
  Relational DB -> Databases -> Tables -> Rows -> Columns
         Elasticsearch -> Indices   -> Types  -> Documents -> Fields
  Elasticsearch集群可以包含多个索引(indices)(数据库),每一个索引可以包含多个类型(types)(表),每一个类型包含多个文档(documents)(行),然后每个文档包含多个字段(Fields)(列)。


「索引」含义的区分
  你可能已经注意到索引(index)这个词在Elasticsearch中有着不同的含义,所以有必要在此做一下区分:


[*]索引(名词) 如上文所述,一个索引(index)就像是传统关系数据库中的数据库,它是相关文档存储的地方,index的复数是indices 或indexes。
[*]索引(动词) 「索引一个文档」表示把一个文档存储到索引(名词)里,以便它可以被检索或者查询。这很像SQL中的INSERT关键字,差别是,如果文档已经存在,新的文档将覆盖旧的文档。
[*]倒排索引 传统数据库为特定列增加一个索引,例如B-Tree索引来加速检索。Elasticsearch和Lucene使用一种叫做倒排索引(inverted index)的数据结构来达到相同目的。

  2.索引的创建
  语法:

PUT /megacorp/employee/1
{
"first_name" : "John",
"last_name" :"Smith",
"age" :      25,
"about" :      "I love to go rock climbing",
"interests": [ "sports", "music" ]
}
  我们看到path:/megacorp/employee/1包含三部分信息:
  名字                         说明     
  megacorp                索引名
  employee                 类型名
  1                            这个员工的ID
页: [1]
查看完整版本: Elasticsearch学习总结(三)