本文共 2520 字,大约阅读时间需要 8 分钟。
一个索引是具有相似特征的文档的集合,用于提高数据的便捷性和搜索性能。例如,客户数据、产品目录和订单数据都可以各自形成一个索引。索引的名称必须全为小写字母,便于区分和管理。
一切设计都是为了提高搜索性能。这一点贯穿始终,决定了索引的最终目标和作用。
在一个索引中,可以定义一种或多种类型(Type)。类型是逻辑上的分类,主要由用户自定义。通常,一个类型用于管理具有共同字段的文档集合。不同版本的类型会有不同的变化。
_doc。文档是存储和索引的基本单位,相当于数据库中的记录。可以是客户信息、产品描述或订单条目等。文档以JSON格式存储,JSON是互联网广泛使用的数据交换格式。
字段是文档数据的分类标识,类似于数据库中的字段。用于区分文档的不同属性。例如,name字段用于存储用户姓名,age字段用于存储年龄等。
映射用于定义字段的处理规则,如数据类型、默认值、分析器等。这些规则决定了Elasticsearch如何处理和存储文档数据,直接影响性能和可靠性。
一个索引可以被划分为多个分片,每个分片是一个完整的“索引”,可以被分配到集群中的任意节点。分片的主要作用是:
每个索引可以有多个副本分片,主要用于提高可用性和性能。副本的重要性体现在:
分片分配是指将分片分配到集群中的具体节点,包括主分片和副本分片的位置决定。主分片负责存储文档,副本分片用于数据冗余和负载均衡。
一个运行中的Elasticsearch实例称为节点,集群由多个节点组成,共同承担数据和负载压力。集群中的主节点负责管理集群范围内的所有变更,如索引创建、删除等。其他节点作为数据节点,负责存储和处理文档。
在一个单节点集群中创建索引时,所有分片都被分配到同一节点。例如,可以指定3个主分片和1个副本分片。
单节点集群的主要缺点是单点故障。如果节点失效,数据可能丢失。因此,建议在集群中添加更多节点,确保高可用性。
通过增加节点数量,可以动态调整分片和副本分片的数量。例如,创建9个分片(3个主分片和6个副本分片),可以显著提升搜索性能。
在集群出现故障时,Elasticsearch具有一定的容错机制。例如,当一个节点关闭时,新的主节点会自动选举,确保集群继续正常运行。
文档存储在主分片中,搜索时会将请求转发到所有相关分片进行处理。路由计算基于文档的ID和分片数量,确保文档被正确定位。
分片的控制涉及分片的创建、删除和管理。每个分片都有一个唯一的ID,用于区分和管理。副本分片可以在节点之间动态分配,确保数据的高可用性和平衡分布。
新建、索引和删除操作属于写操作,必须在主分片上完成后才会同步到副本分片。Elasticsearch通过协调节点管理这些操作,确保数据的一致性和高可用性。
搜索操作属于读操作,可以从主分片或副本分片中任意节点获取结果。Elasticsearch通过协调节点进行负载均衡,确保最佳性能。
文档更新涉及读取和写入操作的结合。Elasticsearch通过版本号管理更新冲突,确保最新版本的文档被正确存储和检索。
mget和bulk API允许批量处理多个文档,提高操作效率。Elasticsearch通过协调节点分解和处理请求,确保高并发处理能力。
分片是Elasticsearch的最小工作单元。倒排索引是实现全文搜索的关键技术,通过将文本转换为词条索引,实现快速搜索。
分片管理包括分片合并和段提交。每秒自动刷新确保文档更新及时可用。通过定期提交和合并,保持索引的高效管理。
文档分析涉及分词和词条标准化。Elasticsearch提供多种分析器,如标准分析器、简单分析器等,用户可以根据需求选择或自定义分析器。
通过配置字符过滤器、分词器和词条过滤器,可以创建自定义分析器,满足特定业务需求。例如,清除HTML标签,移除停止词等。
文档处理涉及版本控制和冲突管理。Elasticsearch通过乐观并发控制确保变更无冲突,避免数据丢失。
通过合理选择和配置,可以确保系统的高可用性和数据一致性。
转载地址:http://nsci.baihongyu.com/