美文网首页
Elasticsearch-索引、文档、Rest API

Elasticsearch-索引、文档、Rest API

作者: 我可能是个假开发 | 来源:发表于2023-02-02 20:41 被阅读0次

    一、数据格式

    Elasticsearch 是面向文档型数据库,一条数据在这里就是一个文档。将 Elasticsearch 里存储文档数据和关系型数据库 MySQL 存储数据的概念进行一个类比:

    Elasticsearch Mysql
    Index Database
    Type Table
    Document Row
    Fields Column

    ES 里的 Index 可以看做一个库,而 Types 相当于表,Documents 则相当于表的行。
    这里 Types 的概念已经被逐渐弱化,Elasticsearch 6.X 中,一个 index 下已经只能包含一个type,Elasticsearch 7.X 中, Type 的概念已经被删除了。

    用 JSON 作为文档序列化的格式,比如一条用户信息:

    {
     "name" : "John",
     "sex" : "Male",
     "age" : 25,
     "birthDate": "1990/05/01",
     "about" : "I love to go rock climbing",
     "interests": [ "sports", "music" ]
    }
    

    二、文档

    一个文档是一个可被索引的基础信息单元,也就是一条数据。
    文档以 JSON(Javascript Object Notation)格式来表示,而 JSON 是一个到处存在的互联网数据交互格式。
    在一个 index/type 里面,可以存储任意多的文档。

    1.定义

    ①ES是面向文档的,文档是所有可搜索数据的最小单位

    • 日志文件中的日志项
    • 一本电影的具体信息/一张唱片的详细信息
    • MP3播放器里的一首歌/一篇PDF文档中的具体内容

    ②文档会被序列化成JSON格式,保存在ES中

    • JSON对象由字段组成
    • 每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进制/范围类型)

    ③每个文档都有一个UniqueID

    • 可以自己指定id
    • 通过ES自动生成

    字段(Field):相当于是数据表的字段,对文档数据根据不同属性进行的分类标识。

    一篇文档包含了一系列字段。类似数据库中的一条记录

    2.文档的元数据

    元数据用于标注文档的相关信息

    {
        "_index":"shopping",
        "_type":"_doc",
        "_id":"Xhsa2ncBlvF_7lxyCE9G",
        "_score":14.8789,
        "_source":{
            "year":1995,
            "@version":1,
            "genre":[
                "Adventure",
                "Animation",
                "Children"
            ]
        },
        "id":"1",
        "title":"Toy Story"
    }
    
    • _index:文档所属的索引名
    • _type:文档所属的类型名
    • _id:文档唯一id
    • _source:文档的原始JSON数据
    • _all:整合所有字段内容到该字段,已被废除
    • _version:文档的版本信息
    • _score:相关性打分

    三、索引

    一个索引就是一个拥有几分相似特征的文档的集合。
    比如说,你可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。
    一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。
    在一个集群中,可以定义任意多的索引。
    能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录就是索引的意思,目录可以提高查询速度。

    {
        "shopping":{
            "aliases":{
    
            },
            "mappings":{
    
            },
            "settings":{
                "index":{
                    "creation_date":"1614265373911",
                    "number_of_shards":"1",
                    "number_of_replicas":"1",
                    "uuid":"eI5wemRERTumxGCc1bAk2A",
                    "version":{
                        "created":"7080099"
                    },
                    "provided_name":"shopping"
                }
            }
        }
    }
    
    • 每个索引都有自己的Mapping定义,用户定义包含的文档的字段名和字段类型
    • Shard体现了物理空间的概念,索引中的数据分散在Shard上
    • Mapping定义文档字段的类型
    • Setting定义不同的数据分布

    四、类型(Type)

    在一个索引中,可以定义一种或多种类型。
    一个类型是索引的一个逻辑上的分类/分区,其语义完全由你来定。
    通常,会为具有一组共同字段的文档定义一个类型。不同的版本,类型发生了不同的变化

    版本 Type
    5.x 支持多种 type
    6.x 只能有一种 type
    7.x 默认不再支持自定义索引类型(默认类型为:_doc)

    五、RestAPI

    image.png

    Index 相关 API

    #查看索引相关信息
    GET kibana_sample_data_ecommerce
    
    #查看索引的文档总数
    GET kibana_sample_data_ecommerce/_count
    
    #查看前10条文档,了解文档格式
    POST kibana_sample_data_ecommerce/_search
    {
    }
    
    #_cat indices API
    #查看indices
    GET /_cat/indices/kibana*?v&s=index
    
    #查看状态为绿的索引
    GET /_cat/indices?v&health=green
    
    #按照文档个数排序
    GET /_cat/indices?v&s=docs.count:desc
    
    #查看具体的字段
    GET /_cat/indices/kibana*?pri&v&h=health,index,pri,rep,docs.count,mt
    
    #How much memory is used per index?
    GET /_cat/indices?v&h=i,tm&s=tm:desc
    

    极客时间《Elasticsearch 核心技术与实战》学习笔记Day19 - http://gk.link/a/11VUS

    相关文章

      网友评论

          本文标题:Elasticsearch-索引、文档、Rest API

          本文链接:https://www.haomeiwen.com/subject/zqkghdtx.html