• Elasticsearch的数据组织


    数据组织主要从以下二方面着手

      逻辑设计:文档、类型、索引

      物理设计:节点、分片

           倒排索引

    前言

    逻辑设计:我们把elasticsearch与关系型数据库做个客观对比

    Relational DB Elasticsearch
    数据库(database) 索引(indices)
    表(tables) 类型(types)
    行(rows) 文档(documents)
    字段(columns) 字段(fields)

    elasticsearch(集群)中可以包含多个索引(数据库),每个索引可以包含多个类型(表),每个类型可以包含多个文档(行),每个文档可以包含多个字段(列)。

    注意:在之前版本中每个文档存储在一个索引中,并分配多个映射类型,映射类型用来表示被索引的文档或者实体的类型,这也带来一个问题(),导致后来版本6.0.0中一个文档只能包含一个映射类型,7.0.0中映射类型被弃用,到8.0.0中完全被删除。

    逻辑设计:文档、类型、索引

    文档属性

      elasticsearch是面向文档操作,也就是最小单位就是文档

      自我包含:一篇文档同时包含字段和对应的值 key:vaule形式

      可以是层次型的:一个文档中包含自文档

      灵活的结构:在关系型数据库中都要预先设计表才能对其操作,而elasticsearch中,有时候可以忽略某个字段或者动态的去添加一个字段(但是这样可能导致脏数据的出现,我们可以预定字段,之后不再改变字段)

      无模式:字段对应值得类型可以是不限类型的

    类型

      文档的逻辑容器,就像关系型数据库一样,表格是行的容器

      类型中对于字段的定义称为映射,比如name映射为字符串类型

    索引

      索引是映射类型的容器,索引是非常大的文档集合,它们都存在各个分片上

    物理设计:节点和分片

    节点

      一个集群至少包含一个节点,而一个节点就是一个elasticsearch进程。节点内可以有多个索引。

      默认的,如果你创建一个索引,那么这个索引将会有5个分片(primary shard,又称主分片)构成,而每个分片又有一个副本(replica shard,又称复制分片),这样,就有了10个分片。

    上图我们可以看到是一个有3个节点的集群,可以看到主分片和对应的复制分片都不会在同一个节点内,这样有利于某个节点挂掉了,数据也不至于丢失。

    一个分片是一个Lucene索引,一个包含倒排索引的文件目录,倒排索引的结构使得elasticsearch在不扫描全部文档的情况下,就能告诉你哪些文档包含特定的关键字。

    倒排索引

    elasticsearch使用的是一种称为倒排索引的结构,采用Lucene倒排索作为底层。这种结构适用于快速的全文搜索,一个索引由文档中所有不重复的列表构成,对于每一个词,都有一个包含它的文档列表。

    1 Study every day, good good up to forever        # 文档1包含的内容
    2 To forever, study every day, good good up       # 文档2包含的内容
    term doc_1 doc_2
    Study ×
    To ×
    every
    forever
    day
    study ×
    good
    every
    to ×
    up

    若我们搜索 to forever包含每个词条的文档

    term doc_1 doc_2
    to ×
    forever
    total 2 1

    elasticsearch的索引和Lucene的索引对比

      elasticsearch将索引被分为多个分片,每份分片是一个Lucene的索引。所以一个elasticsearch索引是由多个Lucene索引组成的。

    了解更多: 倒排索引 | 倒排索引原理和实现

  • 相关阅读:
    SharePoint讨厌“+”吗?
    如何判断文件是否在占用?
    深入浅出SharePoint——设置站点的默认欢迎页面
    深入浅出SharePoint——通过Feature部署Webpart
    VS2008只支持jQuery1.4.1以下版本
    深入浅出SharePoint——Group的常用操作
    深入浅出SharePoint——更新计算列
    深入浅出SharePoint——计算列如何使用Item的ID
    深入浅出SharePoint——在VS2008中正确定义Webpart并通过feature来部署
    理解Javascript_10_对象模型
  • 原文地址:https://www.cnblogs.com/Alexephor/p/11387172.html
Copyright © 2020-2023  润新知