Elasticsearch:《ElasticSearch深入理解》之es集群(2)ElasticSearch 简介

本文介绍了ElasticSearch的基础概念及工作原理,详细解释了Lucene的架构与索引机制,并探讨了ElasticSearch如何实现分布式搜索与数据分析。此外,还讨论了查询语言、字段查询、词项修饰符等内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第1章:ElasticSearch 简介
----------------------------------------------------------------------------------------------------------------

1.1.Apache lucene 简介
---------------------------------------------------------

1.1.1 索引可以单次创建 也可以批量创建


1.1.2 过滤器可以缩减检索返回的文档数量

1.1.3 Lucene的特点:成熟,高性能,可扩展,轻量级。其内核可以创建独立的JAVA库文件,并不依赖于第三方代码。

        用户可以使用各种所见即所得的全文检索功能进行索引和搜索。

1.1.4 Lucene的总体架构

    document 文档:存放将写入索引和从索引搜索出来的数据。

    field 字段:文档的片段,字段名称和内容。

    term 词项:搜索时的一个单位,文本中的某个词。

    token 词条:词项出现的次数,包括词项的文本,开始和结束位移以及类型。

    inverted index 倒排索引: 词项映射到文档的数据结构。词项 计数 文档的映射。计数是词项所出现的文档数。

    term  vector 词向量:存储字段中所有的词条、原始信息、删除标记。

    segment 段:每个索引都是由多个段组成的。

    segments merge 段合并:多个段会在一个叫段合并的阶段合在一起。相同数据的索引,段越少,搜索的速度越快。

    analysis 分析:查询串转换为搜索词项,文档中的数据转换为倒排索引。

    分析器:文本分析有分析器来执行。分析器由 分词器【tokenizer】 过滤器【filter】 字符映射器【character mapper】组成。

    流程:分词器将文本分割成词条,这些词条流送给 过滤器【小写过滤器,ASCII过滤器,多语言词干还原器】处理,字符映射器【分词前的预处理,如HTML处理】

    查询与索引:控制索引与查询操作。索引期:用选择的分析器来处理文档。查询时:查询分析器来分析查询串。

    前缀查询【prefix query】不会被分析,匹配查询【match query】会分析。【索引期】和【检索期】需要使用相同的分析器,才有相同的匹配结果。

    查询语言:查询会被解析成词项和操作符。词项可以是单个词、短语或者一个短句。操作符: and or not  + -【出现和不出现加号或减号后的词】默认or
    
    字段查询中:字段名称:从句【title:elasticsearch 在title中查询所有elasticsearch的文档】

            【title:(+elasticsearch +"mastering book" 在title中查询所有elasticsearch和mastering book都存在的文档】

    词项修饰符:【modifier 修饰项】最常见的修饰符就是【通配符 wildcard】 支持【?一次,* 0和多次】

             支持模糊查询【fuzzy and proximity】 writer~2【波浪号】 与原始词项最大的编辑距离。

             price:[10:00 TO 15:00] 查询价格大于等于10 且 小于等于15的记录

              price:[10:00 TO 15:00} 查询价格大于等于10 且 小于15的记录;即抛出右边界

    反斜杠转义:如果要搜索特殊字符时,需要反斜杠转义。


1.2.ElasticSearch 简介
---------------------------------------------------------

1.2.1 ES的基本概念

    【es 是一个可以构建搜索应用的成成品软件】
    
    【index 索引 可以在lucene内部将数据写入索引和检索出索引】

    【document 文档 由多个字段构成】

    【mapping 映射 由多个字段构成 决定如何将输入分割为词条 哪些应被过滤 哪些需做附加处理】

    【type 类型 一个索引中有多个文档类型,不同的文档类型提供不同的映射】

    【node 节点 应对数据的容错性和数据膨胀 单机无法应对的情况】

    【cluster 集群 数据超过单机负载 多个节点协同处理】

    【shard 分片 集群允许存储的数据超过单机容量 数据分散到多个物理Lucene上 此过程较分片处理】

    【replica 副本 某个节点宕机的应对方式 同样序号的主本 和 副本 不存放在同一个节点上】

    【gateway 网管 索引设置的各种信息收集起来 会在网关中被持久化】


1.2.2 ES架构后的关键概念

    【合理的默认配置】包括:内置的发现 如:字段类型检测 和  自动配置功能。

    【默认的分布式工作模式】每个节点是集群的一部分,一但工作启动 会加入某个集群。

    【对等架构 P2P】避免单点故障 SPOF  索引分片的自动复制

    【易于向集群扩充新节点】

    【支持索引中的多数据类型和多业务模型】

    【准实时 Near Real Time NRT】因为分布式 查询延迟和节点之间临时的数据不同步 难以避免


1.3.ES的工作流程
---------------------------------------------------------

1.3.1查询流程

    【master node 集群状态管理以及集群拓扑变化时做出反应 分发索引分片至对应的节点上 master node 和其他节点同等重要,因为ES是对等架构的,任意一个节点

     在收到查询请求后,可以并行发送给其他的节点,让后合并查询的结果,返回给用户】

    【failure detection 故障检测】主节点会ping 其他节点,不通的时候,会从集群中移除,当某个节点的主分片出现断开时,副本分片会脱颖而出成为新的主分片。

    【与ES的通信】 REST API 和内置的集群发现功能。《ElasticSearch Server》 里有所有的服务。http协议:curl工具。

    UDP协议工具:bulk API,UDP bulk API 这两个工具可以发送多个文档至集群。

    建索引只是在主分片上,而不是副本。当建索引的主分片没在请求节点上时,会转发到正确的节点上。

1.3.2查询数据

    【使用各种查询类型】 包括:简单的词项查询,短语查询,范围查询,布尔查询,模糊查询,区间查询,通配符查询,空间查询等。

    【组合简单查询构建复杂查询】

    【文档过滤】

    【相似文档】

    【查询建议和拼写检查】

    【切面构建的动态导航和计算各种统计量】

    【prospective search 预搜索】查询的两个阶段:分散阶段(scatter phase),合并阶段(gather phase)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值