前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Elasticsearch从入门到放弃:人生若只如初见

Elasticsearch从入门到放弃:人生若只如初见

作者头像
Jackeyzhe
发布于 2020-03-11 04:28:46
发布于 2020-03-11 04:28:46
6500
举报
文章被收录于专栏:代码洁癖患者代码洁癖患者

Elasticsearch系列开坑啦,入门总是愉快的,学一学再放弃啊。

Apache Lucene简介

Lucene基本概念

Apache Lucene是ElasticSearch使用的全文检索库。了解Lucene之前,需要先了解一些概念:

  • 文档:索引和搜索到主要数据载体,它包含一个或多个字段,存放将要写入索引或从索引搜索出来的数据
  • 字段:文档的一个片段,是一个K-V结构
  • 词项:搜索时的一个单位,代表文本中的某个词
  • 词条:词项在字段中的一次出现,包括词项的文本、开始和结束的位移以及类型
  • 倒排索引:倒排索引可以快速获取包含某个单词的文档。倒排索引由两部分组成:单词词典和倒排文件
  • 单词词典:单词词典是由文档集合中出现过的所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向「倒排列表」的指针
  • 倒排列表:倒排列表记载了出现过某个单词的所有文档的列表以及该单词在文档中的位置,每条记录称为一个倒排项(Posting)
  • 倒排文件:所有单词的倒排列表往往顺序存在磁盘的某个文件,这个文件称为倒排文件

其中最重要的是倒排索引,为了方便理解,我们看一个简单的例子。

假设这里有三句话:

T[0] = "it is what it is"

T[1] = "what is it"

T[2] = "it is a banana"

倒排索引通常有两种表现形式:

  • inverted file index{词项,词项所在文档ID}

"a" : {2}

"banana" : {2}

"is" : {0, 1, 2}

"it" : {0, 1, 2}

"what" : {0,1}

  • full inverted index{词项,(词项所在文档ID,在具体文档中的位置)}

"a" : {(2, 2)}

"banana" : {(2, 3)}

"is" : {(0, 1), (0, 4), (1, 1), (2, 1)}

"it" : {(0, 0), (0, 3), (1, 2), (2, 0)}

"what" : {(0, 2), (1, 0)}

Lucene查询语言

在了解了Lucene的一些基本概念之后,还需要了解Lucene的查询语言。一个查询通常被分割为词项和操作符,词项可以是单个词或短语。操作符包括:

  • AND:文档同时包含AND两边的词项时才返回
  • OR:文档包含OR两边的词项中任意一个时就返回
  • NOT:不包含NOT操作符后面的词项
  • +:只有包含+操作符后面词项的文档才会返回。例如,查询+lucene apache表示必须包含lucene,apache可包含可不包含
  • -:匹配的文档不能出现-操作符后的词项
  • 冒号:查询title:elasticsearch表示要查询所有在title字段中包含词项elastisearch的文档
  • 通配符(?/*):?匹配任意一个字符,*匹配任意多个字符(出于性能考虑,通配符不能作为词项的第一个字符)
  • ~:用于Lucene中的模糊查询,~后面跟的整数值确定了近似词项与原始词项的最大编辑距离。例如查询boy~2,那么boy和boys这两个词项都能匹配,用于短语时,则表示词项之间可以接受的最大距离
  • ^:用于对词项进行加权
  • 花括号:表示范围查询

对于一些特殊字符的查询,我们通常使用反斜杠进行转义。

Elasticsearch基本概念

了解了Lucene的基本概念以后,我们回到正题,再来看一下Elasticsearch的一些基本概念,可能和Lucene有一些重复,不过还是有一些Elasticsearch特有的属性。

  • 索引(index):数据存储在索引中,可以向索引写入文档或者从索引读取文档,Elasticsearch的索引可能由一个或多个Lucene索引构成。
  • 文档(document):文档由字段构成,每个字段有它的字段名以及一个或多个字段值
  • 映射(mapping):用于存储元信息,这些元信息决定了如何将输入文本分割为词条,哪些词条应该被过滤掉等
  • 类型(type):每个文档都有与之对应的类型,同一类型下的文档数据结构通常保持一致,不同文档可以有不同的映射。但是在Elasticsearch7以后已经删除了这个概念
  • 节点(node):集群中每个ES实例都称作一个节点
  • 集群(cluster):在生产环境中,我们的数据量和查询压力可能超过了单机负载,因此需要多个节点协同处理
  • 分片(shard):ES会将数据散落到多个Lucene索引上。这些Lucene索引称为分片。ES会自动进行分片处理
  • 副本(replica):ES会为每个分片创建冗余的副本,一方面分摊请求压力,另一方面是为了保证数据不会丢失。ES支持在任意时间点添加或移除副本

Elasticsearch的启动过程

当Elasticsearch启动时,它使用广播技术来发现同一集群内的其他节点,集群中会有一个节点被选为master节点。master节点负责管理集群状态,并在集群中节点数量变化时做出反应。但从用户角度来看,master节点与其他节点没有什么区别,命令可以发送的任意节点执行。

master节点会检查所有分片,决定哪些分片为主分片。主分片确定以后,集群状态为黄色,此时可以接收查询。然后master节点会决定是否要对各个分片创建副本,副本也没有问题以后,集群状态变为绿色。

Elasticsearch的集群状态分为3种:

  • 绿色:一切完好
  • 黄色:所有数据都可用,但有些分片没有分配副本
  • 红色:有些数据不可用

关于Elasticsearch的启动过程,后面还会有更加深入的讨论。

敬请期待。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-09-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 代码洁癖患者 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【Elasticsearch】Elasticsearch倒排索引详解
倒排索引是全文搜索引擎的核心数据结构,其主要作用是从文档中提取关键词,并建立关键词到文档的映射关系。这种结构与传统的正排索引(即文档到关键词的映射)相反,因此称为倒排索引。 在倒排索引中,每个关键词都关联着包含该关键词的文档列表,这使得搜索操作能够迅速定位包含特定关键词的文档,从而大幅提高查询效率。
屿小夏
2024/07/09
1.1K0
一文俯瞰Elasticsearch核心原理
Lucene是一种高性能、可伸缩的信息搜索(IR)库,在2000年开源,最初由鼎鼎大名的Doug Cutting开发,是基于Java实现的高性能的开源项目。Lucene采用了基于倒排表的设计原理,可以非常高效地实现文本查找,在底层采用了分段的存储模式,使它在读写时几乎完全避免了锁的出现,大大提升了读写性能。我们所熟知的Elasticsearch,Solr都是基于Lucene工具包进行开发的全文搜索引擎,因此理解Lucene也可以帮助我们更好的理解Elasticsearch原理。
大数据真好玩
2020/07/07
9880
ElasticSearch基础:从倒排索引说起,快速认知ES
ElasticSearch(简称ES)是什么?按照 ElasticSearch官网 的定义,Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎。
云深i不知处
2022/01/05
3.9K0
ElasticSearch基础:从倒排索引说起,快速认知ES
Elasticsearch入门:搜索与分析引擎的核心技术
Elasticsearch是一个高度可扩展的开源全文搜索和分析引擎,它允许你在几乎实时的情况下快速存储、搜索和分析大量数据。它通常用作底层引擎/技术,为企业级搜索应用程序和大数据分析提供支持。在本文中,我们将深入探讨Elasticsearch的核心技术和功能,包括其架构、数据存储、查询和分析、以及如何实现高可用性和扩展性。
ruoyuliu
2023/07/07
9670
看完这篇还不会Elasticsearch,我跪搓衣板!
本文转载自:https://www.cnblogs.com/jajian/p/11223992.html
天涯泪小武
2019/08/15
7760
看完这篇还不会Elasticsearch,我跪搓衣板!
Search - 一文入门ElasticSearch(节点、分片、CRUD、倒排索引、分词)
ElasticSearch是非常重要的检索工具,利用分词、索引(倒排索引)、分词从众多检索工具中脱颖而出,本章是入门基础学习篇内容。
stark张宇
2023/03/16
4.1K0
触类旁通Elasticsearch:简介
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wzy0623/article/details/85613919
用户1148526
2019/05/25
4890
全文搜索引擎Elasticsearch,这篇文章给讲透了
由于近期在公司内部做了一次分享,所以本篇主要是基于之前的博文的一个总结,希望通过这篇文章能让读者大致了解Elasticsearch是做什么的以及它的使用和基本原理。
大数据技术架构
2019/08/16
10K3
全文搜索引擎Elasticsearch,这篇文章给讲透了
ElasticSearch技术原理
ES将数据存储于一个或多个索引中,索引是具有类似特性的文档的集合,类比传统关系型数据库的一个数据库(database),或者一个数据存储方案(schema)。索引由其名称(必须全小写字符)进行标识,并通过引用此名称完成文档的创建、搜索、更新及删除操作。
爱撸猫的杰
2020/03/24
5500
ElasticSearch技术原理
Elasticsearch入门指南:构建强大的搜索引擎(上篇)
随着信息时代的到来,搜索引擎成为人们获取信息的重要工具。而 Elasticsearch 作为一个开源、分布式的搜索引擎,具备强大的搜索和分析功能,广泛应用于各种大规模数据的存储和搜索场景。本文将介绍 Elasticsearch 的基本概念、索引的使用方法和场景以及注意事项,帮助您快速入门。
灬沙师弟
2023/09/20
4690
Elasticsearch入门指南:构建强大的搜索引擎(上篇)
深入搜索引擎之 Elasticsearch 必知必会(一):开发视角
两句话了解它是什么 1. 搜索引擎。提供了数据存储、数据处理、数据查询、聚合统计的能力。 2. 创始人说:“不要求你必须是一个数据科学家才能把它用好” 前言 Elasticsearch 是一个很有意思的产品,不同岗位的人,对它的关注维度区别比较大 主要可以分三个层面 开发 基本功能 底层工作原理 数据建模最佳实践 运维 容量规划 性能优化 问题诊断 滚动升级 搜索结果优化 查全率、查准率等指标 搜索与如何解决搜索的相似性问题 具体场景下的调优 对比传统数据库的区别主要在于 传统关系型数据库 事务性 Joi
QQ音乐技术团队
2022/01/06
1.3K0
触类旁通Elasticsearch:原理
ES被设计为处理海量数据的高性能搜索场景。海量数据具体说至少应该是数亿文档,而高性能具体说就是从数亿文档中任意搜索需要的信息,应该在秒级返回结果。既然ES的一切都是为了性能而设计,从逻辑设计和物理设计两个角度考察ES的数据组织,对于理解ES的工作原理会有帮助。
用户1148526
2019/05/25
7860
03 . Elasticsearch概念及Search和Analyzer简单使用
分片数设置过大,7.0开始,默认主分片设置成1,解决了over-sharding的问题
iginkgo18
2022/05/09
1.3K0
03 . Elasticsearch概念及Search和Analyzer简单使用
2022 最新 Elasticsearch 面试题
面试官: 想了解应聘者之前公司接触的 ES 使用场景、 规模, 有没有做过比较大 规模的索引设计、 规划、 调优。
猫头虎
2024/04/07
1430
2022 最新 Elasticsearch 面试题
初识 Elasticsearch7.x(一)
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。无论在开源还是专有领域,Lucene可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。
Remember_Ray
2021/12/25
5200
初识 Elasticsearch7.x(一)
Elasticsearch数据操作原理
每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要用不同的索引,才能起到最大化加快查询的目的。
栗筝i
2023/10/16
3040
Elasticsearch数据操作原理
全文检索的极致之选:Elasticsearch完全指南
倒序索引也被称为“反向索引”或“反向文件”,是一种索引数据结构。倒序索引在“内容”和存放内容的“位置”之间的映射,其目的在于快速全文索引和使用最小处理代价将新文件添加进数据库。通过倒序索引,可以快速根据“内容”查到包含它的文件。这种数据结构被广泛使用在搜索引擎中,倒排索引有两种不同的索引形式:
用户1413827
2023/11/28
1.1K0
面试之Solr&Elasticsearch[通俗易懂]
优点: 1.Elasticsearch是分布式的。不需要其他组件,分发是实时的,被叫做”Push replication”。 2.Elasticsearch 完全支持 Apache Lucene 的接近实时的搜索。 3.处理多租户(multitenancy)不需要特殊配置,而Solr则需要更多的高级设置。 4.Elasticsearch 采用 Gateway 的概念,使得完备份更加简单。 5.各节点组成对等的网络结构,某些节点出现故障时会自动分配其他节点代替其进行工作。 缺点:
全栈程序员站长
2022/08/04
2.2K0
还在为数据搜索慢而烦恼吗?看过来
不知道大家在项目中是否使用过ElastricSearch?大家对它的了解又有多少呢?官网的定义:Elasticsearch是一个分布式、可扩展、近实时的搜索与数据分析引擎。今天我们就来揭开一下它的神秘面纱(以下简称ES)。
阿Q说代码
2021/05/13
4680
还在为数据搜索慢而烦恼吗?看过来
Elasticsearch面试题精选20题[通俗易懂]
9. Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?
全栈程序员站长
2022/09/30
2.3K0
Elasticsearch面试题精选20题[通俗易懂]
推荐阅读
相关推荐
【Elasticsearch】Elasticsearch倒排索引详解
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档