Elasticsearch 第二篇:基本概念和基础操作

      上一篇文章,我们已经是在Windows10 上搭建了 Elasticsearch 环境已经安装了相关的插件,现在我们就可以像操作webapi一样简单的操作 ElasticSearch 了,有园友说可以用谷歌插件 Sense 来操作,不管了,这里就用最常见的软件 Postman 来进行测试和学习。在进行接口测试之前,先了解一下基本概念。

Elasticsearch 基本概念

 1、Near RealTime 准实时

      Elasticsearch 是一个准实时的搜索平台。准实时是指:ES写入数据、搜索数据的时候会有一些时间上的延迟,但一般是在1s以内,接近实时。

2、Cluster 集群

      节点(服务器)的集合就形成集群,集群包含一个或者多个节点,这些节点分工合作,一起保存整个数据,并提供联合索引和搜索的功能。每个ES实例都默认有一个 clustername 属性(这个属性默认值是 “Elasticsearch” ),如果多个ES实例的 clustername 都一样,例如都是“MySearch”,则这多个实例都启动运行起来,就形成一个集群。反之,如果各个实例的 clustername 不同,那么这些实例各自独立,不构成集群,也没有分工合作的产生。

3、Node 节点

      节点是组成集群的一个单独服务器,用于存储数据并提供集群的搜索和索引功能。节点同样有唯一一个名字,可以手动指定节点的名字,然后按照配置加入指定的集群。

4、Index  索引库

     索引是具有相似特性的文档集合,ES中索引是存放数据的地方,和关系型数据库的索引有区别,类似关系型数据库“库”的概念。

5、Type 类型

      每个Index下面,有一个或者多个Type(ES最新版规定Index下面只有一个Type),区分数据类型,相当于关系型数据库“表”的概念,但是高版本的ES,这个Type的概念可能已经是弃用。

6、Document 文档

      ES中最小的数据单元就是文档,相当于关系型数据库中某一个表的某一条记录,会被ES压缩成json格式。

7、Field 字段

      相当于关系型数据库“列”的概念。

8、Shard 分片

      什么是分片?当我们建立一个索引时,这个索引的数据可以分成几部分,每一部分叫做一个分片,在集群模式下,分片可以分布在若干节点上,而每个分片可以复制多个备份,每个备份简称为分片的复制,分片和它的复制通常放在不同的节点上,这是因为集群允许某个节点出现问题时,可以从其他节点找到对应的数据,如果分片和它对应的复制放在同一节点上,当这一节点出现问题,其他节点再也找不到这一部分的数据,集群也失去了意义。

 

Elasticsearch 基础操作

1、添加文档   

      格式是       put     /<index>/_doc/<_id>   

      或者是       put     /<index>/_create/<_id>

      或者是       post   /<index>/_create/<_id>

      当不需要指定 id 时,也可以是    post     /<index>/_doc

      例如往索引库  db_news 添加文档,该文档是一则新闻信息,并指定该文档的编号为 1 :

PUT http://localhost:9200/db_news/_doc/1
{
    "title": "今日头条新闻1",
    "author": "新华时报记者1",
    "content": "今日券商股继续涨停1"
}

2、修改文档

     格式是   put    /<index>/_doc/<_id>

     修改就是覆盖,例如我们修改以上id=1的文档:

PUT http://localhost:9200/db_news/_doc/1
{
    "title": "今日头条新闻2",
    "author": "新华时报记者2",
    "content": "今日券商股继续涨停2"
}

    有时候,我们并不希望直接覆盖数据,当索引库中存在这个文档时,我们希望能提醒已存在,这时可以带上参数 op_type=create , 响应时会提醒修改出现冲突,有效避免文档被修改

PUT http://localhost:9200/db_news/_doc/1?op_type=create 
{
"title": "今日头条新闻40",
"author": "新华时报记者40",
"content": "今日券商股继续涨停40"
}

    注意每修改一次文档,ES中该文档的 _version 属性都会自增1

3、删除文档

     格式是     delete    /<index>/_doc/<_id>

     删除很简单,传入id即可:

DELETE http://localhost:9200/db_news/_doc/1

4、文档基础查询

      格式是     get    /<index>/_doc/<_id>

      查询指定库 db_news,指定表 new 的某条文档( id=1):

GET http://localhost:9200/db_news/_doc/1

      当然,如果要控制返回的数据结构(即:哪些字段显示,哪些字段不显示),可以参考这篇博文  https://www.cnblogs.com/chenhuabin/p/13983303.html

      查询是一个比较复杂的用法,下一篇再总结一下。

5、超时控制

     此外,在执行创建文档、修改文档时,有可能因为网络原因导致操作超时,ES 默认超时时间是 1分钟,但是可以通过调整参数限制超时时间,

     例如,添加文档时,限定超时时间为5分钟,可以加上参数 timeout = 5m

PUT  http://localhost:9200/db_news/_doc/1?timeout=5m
{
    "title":"今日头条新闻",
    "author":"新华时报记者",
    "content":"今日券商股继续涨停"
}

 

posted @ 2020-07-14 14:17  vincentfhr方海荣  阅读(488)  评论(0编辑  收藏  举报