前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >4.Elasticsearch索引文档

4.Elasticsearch索引文档

作者头像
IT云清
发布2019-01-22 11:13:46
5710
发布2019-01-22 11:13:46
举报
文章被收录于专栏:IT云清IT云清IT云清

本文从索引文档开始,后面逐步讲解索引,搜索,聚合等概念,如果有概念不能理解,可以先照着代码操作,后面会更详细的解释。

我们这里创建几个文档,用来存储user信息,在使用mysql时,一条user信息,在user表中可能是一条数据,然后这条数据中会关联其他表的id,这样多张关联表的内容,综合起来,会形成一个完整的user信息。但是在es中,我们可以把所有关于user的信息全部存在一个文档中,以user文档的形式存储,一个文档代表一个user。

存储数据到es中的行为叫做索引,索引一个文档前,需要确定这个文档存放在哪里;一个es集群可以包含多个索引,每个索引可以包含多个类型,每个类型中又可以存储不同的文档,每个文档可以有多个属性。

1.名词解释

下面对这几个关键词进行简单的解释,部分关键词后面会详细解释。

索引(名词):

如前所述,一个 索引 类似于传统关系数据库中的一个 数据库 ,是一个存储关系型文档的地方。 索引 (index) 的复数词为 indices 或 indexes 。

索引(动词):

索引一个文档 就是存储一个文档到一个 索引 (名词)中以便它可以被检索和查询到。这非常类似于 SQL 语句中的 INSERT 关键词,除了文档已存在时新文档会替换旧文档情况之外。

倒排索引:

关系型数据库通过增加一个 索引 比如一个 B树(B-tree)索引 到指定的列上,以便提升数据检索速度。Elasticsearch 和 Lucene 使用了一个叫做 倒排索引 的结构来达到相同的目的。

默认的,一个文档中的每一个属性都是被索引的(有一个倒排索引)和可搜索的。一个没有倒排索引的属性是不能被搜索到的。我们将在 倒排索引 讨论倒排索引的更多细节。

在理解这些概念时,可以对比着mysql中,数据库,表,每条数据,和java中的对象,对象属性等来关联理解。

2.索引user文档

我们接下来做如下操作:

  • 1.每一个user的信息索引为一个文档,包含他的全部信息
  • 2.每个user文档都是user类型
  • 3.user类型的文档放在people索引内

- 4.people索引保存在es集群中

上面这四步,我们用一条命令即可完成

PUT people/user/1
{
  "id":1,
  "name":"张三",
  "age":18,
  "address":"杭州",
  "interests": [ "bastkeyball", "football" ],
  "create_time":"2018-02-04"
}

PUT people/user/1 :在people索引下的user类型中,新建一个文档,id为1,文档内容为括号中的。

同步到mysql中,我们可以理解为:在名为people的数据库中,有张user表,在user表中存一条记录,id为1,各个字段的值为括号中的内容。

不同的是,在mysql中,做此操作,要建库,建表,然后才能插入,而es中,索引和存储等过程一行命令全部完成,es在内部会搞定一切。

我们再添加几条记录:

PUT people/user/2
{
  "id":2,
  "name":"李四",
  "age":23,
  "address":"太原",
  "interests": [ "bastkeyball", "football" ],
  "create_time":"2017-05-04"
}

PUT people/user/3
{
  "id":3,
  "name":"王五",
  "age":48,
  "address":"杭州",
  "interests": [ "bastkeyball", "football" ],
  "create_time":"2018-02-04"
}

PUT people/user/4
{
  "id":4,
  "name":"张飞",
  "age":27,
  "address":"宁波",
  "interests": [ "bastkeyball", "football" ],
  "create_time":"2018-02-04"
}
下一篇:5.Elasticsearch检索文档
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月23日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.名词解释
  • 2.索引user文档
  • - 4.people索引保存在es集群中
    • 下一篇:5.Elasticsearch检索文档
    相关产品与服务
    云数据库 SQL Server
    腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档