ElasticSearch 基本概念 索引、文档

索引 文档偏向于开发人员的视角,是一个逻辑上面的概念,节点和分片呢偏向运维人员的视觉,偏向是物理的概念

文档(Document)


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

  • 日志文件中的日志项 

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

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

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

每个文档都有一个 Unique ID

  • 你可以自己指定 ID
  • 或者通过 Elasticsearch 自动生成

你可以理解文档为关系型数据库里面的一条记录

  • id 字段自增id
  • good_sn 商品SKU
  • good_name 商品名称
  • good_introduction 商品简介
  • good_descript 商品详情

PUT http://IP:9200/shop
{
    "mappings":{
        "good":{
            "properties":{
                "id":{
                    "type":"long",
                    "fields":{
                        "keyword":{
                            "type":"keyword",
                            "ignore_above":256
                        }
                    }
                },
                "good_sn":{
                    "type":"text",
                    "fields":{
                        "keyword":{
                            "type":"keyword",
                            "ignore_above":256
                        }
                    }
                },
                "good_name":{
                    "type":"text",
                    "fields":{
                        "keyword":{
                            "type":"keyword",
                            "ignore_above":256
                        }
                    }
                },
                "good_introduction":{
                    "type":"text",
                    "fields":{
                        "keyword":{
                            "type":"keyword",
                            "ignore_above":256
                        }
                    }
                },
                "good_descript":{
                    "type":"text",
                    "fields":{
                        "keyword":{
                            "type":"keyword",
                            "ignore_above":256
                        }
                    }
                }
            }
        }
    }
}

插入数据:

POST http://IP:9200/shop/good/id
{
    "id":"1",
    "good_sn":"4217251852947",
    "good_name":"【12期免息 再减500元】Apple/苹果 iPhone 11全网通4G 超广角拍照手机苏宁易购官方store 苹果11 ",
    "good_introduction":"选套餐一免费享更多好礼",
    "good_descript":"商品详细信息"
}

JSON 文档


 一篇文档包含了一系列的字段。类似数据库表中一列,JSON 文档,格式灵活,不需要预先定义格式

  •  字段的类型可以指定或者通过Elasticsearch 自动推算
  • 支持数组/ 支持嵌套

从csv文件中读取到raw data是关于电影的,通过logstash进行转化之后进入es之后就是json的格式了。

Json的每个字段都有其数据类型,es可以根据其字段做一个数据类型的推算。上面可以看到在es当中数据还是支持数组的,支持嵌套。

文档的元数据


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

  • _index:文档所属的索引名
  • _type:文档所属的类型名
  • _id :文档唯一ID
  • _source∶ 文档的原始 JSON 数据
  • _all:整合所有字段内容到该字段,已被废除
  • _version∶ 文档的版本信息
  • _score∶ 相关性打分

每篇文档都有其元数据,比如_index表示文档所属的索引名字

All字段在7.0已经被废除了,在早期版本_version  代表文档在系统里面的版本,当有大量数据并发读写的时候,版本信息可以很好的帮你解决版本冲突的问题

在全文检索的时候,相关性非常重要,所以es根据结果的算分也就是_score在该文档查询当中的值

索引


 Index-索引是文档的容器,是一类文档的结合

  • Index 体现了逻辑空间的概念∶每个索引都有自己的 Mapping 定义,用于定义包含的文档的字段名和字段类型
  • Shard 体现了物理空间的概念∶索引中的数据分散在 Shard上

索引的 Mapping 与 Settings

  • Mapping 定义文档字段的类型
  • Setting 定义不同的数据分布

简单做个理解就是索引当中的数据最后是被分配在shard分片上,在一个索引上面可以为其设置mapping和settings,Setting主要是可以去指定究竟要用多少分片,以及数据是如何分布的。

索引的不同语意


  • 名词∶一个Elasticsearch集群中,可以创建很多个不同的索引
  • 动词∶ 保存一个文档到Elasticserch的过程也叫索引(indexing)ES 中,创建一个倒排索引的过程
  •  名词∶一个B 树索引,一个倒排索引

倒排索引是搜索引擎当中一个非常重要的数据结构

抽象与类比


如果将关系型数据库和elastich做一个并不是非常恰当的类比,其实,当你谈到关系型数据库的时候数据库对应的就是es里面的索引。那么关系型数据库里面的每一条记录在es当中就是文档。关系型数据库里面的每个字段就是es当中文档的一个字段。Es当中的mapping就是关系型数据库当中schema中的表定义

Sql可以对关系型数据库进行查询的,在es当中也提供了DSL帮助你进行各种各样的查询

其实es和关系型数据库有各自的优缺点,当你要进行全文检索,对搜索结果进行算分的时候es会特别的合适。当你对数据事务性要求特别高的时候,那么需要将传统的关系型数据库和es结合使用。

为了方便其他语言的整合,es提供了丰富的api来给其他程序进行调用,所以程序要和es进行集成的时候,只需要发出http的请求就会得到相应的结果。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值