zoukankan      html  css  js  c++  java
  • Elastic Search基础概念

    主要概念:

    1. 节点和集群

    Elasticsearch可以作为一个独立的单个搜索服务器。不过,为了能够处理大型数据集,实现
    容错和高可用性,Elasticsearch可以运行在许多互相合作的服务器上。这些服务器称为集群
    (cluster),形成集群的每个服务器称为节点(node)。

    2. 分片

    当有大量的文档时,由于内存的限制、硬盘能力、处理能力不足、无法足够快地响应客户端
    请求等,一个节点可能不够。在这种情况下,数据可以分为较小的称为分片(shard)的部分(其
    中每个分片都是一个独立的Apache Lucene索引)。每个分片可以放在不同的服务器上,因此,数
    据可以在集群的节点中传播。当你查询的索引分布在多个分片上时,Elasticsearch会把查询发送
    给每个相关的分片,并将结果合并在一起,而应用程序并不知道分片的存在。此外,多个分片可
    以加快索引。

    3. 副本

    为了提高查询吞吐量或实现高可用性,可以使用分片副本。副本(replica)只是一个分片的
    精确复制,每个分片可以有零个或多个副本。换句话说,Elasticsearch可以有许多相同的分片,
    其中之一被自动选择去更改索引操作。这种特殊的分片称为主分片(primary shard),其余称为副
    本分片(replica shard)。在主分片丢失时,例如该分片数据所在服务器不可用,集群将副本提升
    为新的主分片。

    4. 时光之门

    Elasticsearch处理许多节点。集群的状态由时光之门控制。默认情况下,每个节点都在本地
    存储这些信息,并且在节点中同步。

    数据结构定义:

    1. 索引

    索引(index)是Elasticsearch对逻辑数据的逻辑存储,所以它可以分为更小的部分。你可以把
    索引看成关系型数据库的表。然而,索引的结构是为快速有效的全文索引准备的,特别是它不存
    储原始值。如果你知道MongoDB,可以把Elasticsearch的索引看成MongoDB里的一个集合。如果
    你熟悉CouchDB,可以把索引看成CouchDB数据库索引。Elasticsearch可以把索引存放在一台机器
    或者分散在多台服务器上,每个索引有一或多个分片(shard),每个分片可以有多个副本(replica)。

    2. 文档

    存储在Elasticsearch中的主要实体叫文档(document)。用关系型数据库来类比的话,一个文
    档相当于数据库表中的一行记录。当比较Elasticsearch中的文档和MongoDB中的文档,你会发现
    两者都可以有不同的结构,但Elasticsearch的文档中,相同字段必须有相同类型。这意味着,所
    有包含title字段的文档,title字段类型都必须一样,比如string。
    文档由多个字段组成,每个字段可能多次出现在一个文档里,这样的字段叫多值字段
    (multivalued)。每个字段有类型,如文本、数值、日期等。字段类型也可以是复杂类型,一个字
    段包含其他子文档或者数组。字段类型在Elasticsearch中很重要,因为它给出了各种操作(如分
    析或排序)如何被执行的信息。幸好,这可以自动确定,然而,我们仍然建议使用映射。与关系
    型数据库不同,文档不需要有固定的结构,每个文档可以有不同的字段,此外,在程序开发期间,
    不必确定有哪些字段。当然,可以用模式强行规定文档结构。从客户端的角度看,文档是一个JSON
    对象(关于JSON格式的更多内容,参见http://en.wikipedia.org/wiki/JSON)。每个文档存储在一个
    索引中并有一个Elasticsearch自动生成的唯一标识符和文档类型。文档需要有对应文档类型的唯
    一标识符,这意味着在一个索引中,两个不同类型的文档可以有相同的唯一标识符。

    3. 文档类型

    在Elasticsearch中,一个索引对象可以存储很多不同用途的对象。例如,一个博客应用程序
    可以保存文章和评论。文档类型让我们轻易地区分单个索引中的不同对象。每个文档可以有不同
    的结构,但在实际部署中,将文件按类型区分对数据操作有很大帮助。当然,需要记住一个限制,
    不同的文档类型不能为相同的属性设置不同的类型。例如,在同一索引中的所有文档类型中,一
    个叫title的字段必须具有相同的类型。

    4. 映射

    在有关全文搜索基础知识部分,我们提到了分析的过程:为建索引和搜索准备输入文本。文
    档中的每个字段都必须根据不同类型做相应的分析。举例来说,对数值字段和从网页抓取的文本
    字段有不同的分析,比如前者的数字不应该按字母顺序排序,后者的第一步是忽略HTML标签,
    因为它们是无用的信息噪音。Elasticsearch在映射中存储有关字段的信息。每一个文档类型都有
    自己的映射,即使我们没有明确定义。

  • 相关阅读:
    Javascript高级编程学习笔记(66)—— 事件(10)变动事件
    Javascript高级编程学习笔记(65)—— 事件(9)复合事件
    Javascript高级编程学习笔记(64)—— 事件(8)键盘与文本事件
    Javascript高级编程学习笔记(63)—— 事件(7)鼠标及滚轮事件
    Javascript高级编程学习笔记(62)—— 事件(6)焦点事件
    Javascript高级编程学习笔记(61)—— 事件(5)UI事件
    Javascript高级编程学习笔记(60)—— 事件(4)事件类型
    Javascript高级编程学习笔记(59)—— 事件(3)事件对象
    Javascript高级编程学习笔记(58)—— 事件(2)事件处理程序
    Javascript高级编程学习笔记(57)—— 事件(1)事件流
  • 原文地址:https://www.cnblogs.com/cuiyuanhao/p/12714140.html
Copyright © 2011-2022 走看看