设为首页 加入收藏

TOP

〈二〉ElasticSearch的认识:索引、类型、文档(一)
2019-09-19 18:10:13 】 浏览:118
Tags:ElasticSearch 认识 索引 类型 文档

发表日期:2019年9月19日


上节回顾

在学习新的内容之前,先回顾一下上节的内容,上节主要讲述了以下的内容:

  1. ElasticSearch是什么?什么是搜索引擎?为什么选择ElasticSearch?
  2. 搜索是怎么做到的:分词、倒排索引?
  3. 环境的搭建
  4. 如何通过kibana操作elasticsearch
  5. hello world中讲述了如何使用“写数据->查指定数据”,"写数据->通过关键字搜索数据"

本节前言

这节将涉及index、type、document的增删查改相关的内容。
index就像sql中的库,type就像sql中的表,document就像sql中的记录。
这节认识index,type,document,会帮助我们认识ElasticSearch数据存储的逻辑结构。就好像你学SQL要先学会了建库、建表,才能插入记录。而一些更深一点的内容,例如如何对document进行搜索、排序,这些将留到下一节再讲。


索引index

索引index是存储document文档数据的结构,意义类似于关系型数据库中的数据库。




创建索引

在上一节的hello world中,我们并没有讲如何创建索引,那里直接就插入了数据,那样的话ElasticSearch会帮我们以默认的配置来自动创建索引。
下面讲一下如何手动创建索引:

语法:

// 语法:
PUT /索引名
{
    index的配置(primary shard的数量等)
}

例子:

// 例子(不带配置信息的话以默认配置创建)【请不要复制这个注释!】:
PUT /product

// 例子(带配置信息的话以配置信息创建)【请不要复制这个注释!】
PUT /product
{
    "settings":{
        "index":{
            "number_of_shards":3,
            "number_of_replicas":1
          }
     }
}

在上述的例子中:number_of_shards是主分片的数量;number_of_replicas是副本分片的数量(这里提一下,number_of_replicas副本分片的数量是面向主分片的,所以这个值为1时代表每一个主分片有一个副本分片)。

返回结果:

{
  "acknowledged": true,
  "shards_acknowledged": true,
  "index": "product"
}

【在插入一个文档的时候,如果index还没有创建,那么会自动创建,这时候index的一些配置会采用默认的配置,默认的主分片数量是5,副本分片数量是1




查看索引

查看单个索引

语法:GET /索引名
效果:返回指定索引的信息
例子:GET /product
返回结果解析:

  • aliases:是索引的别名,由于我们没有定义索引别名所以没有数据(索引别名后面再讲)
  • mappings:是索引中存储的数据的结构信息,由于上图的索引product中并没有存储document,而且我们也没有指定,所以也为空。mappings定义了文档的字段的数据类型和搜索策略等信息。【后面的知识点】
  • settings:索引的配置信息
    • creation_date是创建日期(毫秒级别的时间戳)
    • number_of_shards是主分片数量
    • number_of_replicas是副本分片的数量
    • uuid是索引的id
    • version是索引的版本信息
    • provided_name是索引名
      一个包含了mappings的结果图:




查看所有索引

命令:GET /_cat/indices?v
效果:查看所有索引,显示索引的健康状态等信息。
【如果没有v选项,那么就不会有第一行关于该列意义的头部】
返回结果解析:

  • health: 索引的健康状态(受分片的运行状态影响)【集群管理的知识点】
  • status: 索引是开启的还是关闭的
  • index: index的名称
  • uuid:索引的UUID
  • pri: primary shared的数量
  • rep: replicated shared的数量
  • docs.count: 文档document的数量
  • docs.deleted: 被删除的文档document的数量
  • store.size:总数据的大小
  • pri.store.size:主分片上的数据的大小(这里因为只运行了一个服务节点,所以没有可运行的副本分片,所以总数据大小等于主分片的数据大小)




删除索引

语法:DELETE /索引名【支持同时删除多个索引,以逗号分割,如DELETE /testindex1,testindex2】
语法例子:DELETE /product
返回结果:【当acknowledged为true的时候代表删除成功】

{
  "acknowledged": true
}




修改索引

【修改索引主要是修改分片数量、mapping、分词器,由于mapping和分词器涉及很深,需要前置知识,所以留到后面讲。】

修改副本分片数量

不讲语法了,直接看例子:

PUT /product/_settings
{
  "index":{
    "number_of_replicas":2
  }
}




关闭索引

关闭索引是为了避免修改索引的配置时他人进行文档读写。关闭索引后,就只能获取索引的配置信息,而不能读写索引中的document。有时候也用于关闭一些无用的索引来减少资源消耗。
语法:

  • 关闭索引:POST /索引名/_close
  • 打开索引:POST /索引名/_open




索引别名

索引别名是一个“别名”,但能够像索引名那样使用,它的使用场景一方面是“使用更简洁的索引名来获取数据”,另一个方面是“通过索引别名来指向索引(别名B指向索引A),方便修改指向的索引,用于解决可能的更换索引的场景(比如你需要统一修改原有索引的信息,那你可以新建索引C,C存储了修改后的数据,更改指向原本索引A的索引别名B指向C)。”

增加索引别名:

语法:

POST /_aliases
{
    "actions":[
        {
            "add":{
                "index":"索引名",
                "alias":"索引别名"
            }
        }
    ]
}

例子:

POST /_aliases
{
  "actions":[
    {
      "add":{
        "index":"product",
        "alias":"pdt&q
首页 上一页 1 2 3 下一页 尾页 1/3/3
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇redis入门初学知识 下一篇Oracle 11g Dataguard参数详解

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目