ElasticSearch基础知识点

1.ES的特点

  • 高性能: Elasticsearch 可以快速地处理大量数据,支持实时搜索和分析,能够在几秒钟内从大规模数据中找到所需结果。
  • 实时性: Elasticsearch 可以在几乎实时的情况下提供搜索结果,同时也支持实时地更新和删除文档。
  • 多种查询方式: Elasticsearch 支持多种查询方式,包括全文搜索、精确搜索、范围搜索、聚合分析等,能够满足不同应用场景的需求。
  • 可扩展性: Elasticsearch 具有良好的可扩展性,可以通过添加更多的节点来扩展集群规模,同时也支持水平扩展,可以增加节点的数量来提高性能。
  • 分布式架构: Elasticsearch 使用分布式架构,可以将数据分散到多个节点上,实现高可用性和横向扩展。

2.ES如何存储数据,数据结构是怎样

倒排索引是 Elasticsearch 存储数据的核心结构,它由多个词项映射到多个文档组成。在索引时,每个文档的字段都被拆分成独立的词项,并映射到包含它的文档。倒排索引中的每个词项都包含了一系列文档的信息,包括文档的 ID、词项在文档中出现的位置等。

3.ElasticSearch 的查询语句是如何构造的?

Elasticsearch 的查询语句可以使用 REST API 构造,通过发送 HTTP 请求来进行搜索操作。查询语句通常由两部分组成:查询体(query)和过滤器(filter)

4.ElasticSearch 的聚合操作是怎么样的?

Elasticsearch 的聚合(Aggregations)是一种在搜索结果上进行统计和分析的功能,它能够让用户轻松地对搜索结果进行分组、汇总、统计、排序等操作,从而更好地理解数据。

5. ElasticSearch 的索引映射是怎么样的?

Elasticsearch 中的索引映射(Index Mapping)是用于定义索引中文档的结构和字段的数据类型、分析器、存储方式等属性的机制。

  • 定义字段的数据类型: 在 Elasticsearch 中,每个字段必须具有一个数据类型。这些数据类型可以是字符串、数字、日期等等,不同的数据类型具有不同的属性和行为,因此索引映射可以用于定义每个字段的数据类型。
  • 定义字段的分析器: 在文本字段中,可以使用分析器对文本进行处理,如将文本分成单词,并将它们存储在倒排索引中。索引映射可以用于定义每个文本字段使用的分析器,以及如何处理文本。
  • 定义字段的存储方式: 索引映射可以用于定义每个字段的存储方式,例如存储方式可以是压缩、未压缩、使用哪种编码方式等等。
  • 控制字段的索引行为: 索引映射可以用于定义每个字段的索引行为,例如是否索引该字段、如何索引该字段、是否需要排序和聚合该字段等等。

6.倒排索引的构建过程

  • 文档分词: 首先对文档进行分词处理,将文本拆分成词项(tokens)或称为词元。
  • 构建词典: 对所有文档的分词结果进行去重和排序,形成一个词典,词典中的每个词项对应一个倒排列表。
  • 构建倒排列表: 对于词典中的每个词项,找到包含该词项的所有文档,并记录文档的 ID(或称为文档编号),生成一个倒排列表。
  • 存储倒排索引: 合并倒排索引:当多个文档被索引时,Elasticsearch会将它们的倒排索引合并成一个全局倒排索引,包含了所有文档中出现的单词和对应的文档ID列表。

7.分词器的作用

分词器的作用是将原始文本按照一定规则进行分词,生成词汇单元,同时也可以进行一些额外的文本处理,如去除停用词、大小写转换、同义词转换等。分词器的输出会被用于建立倒排索引,同时也会被用于查询语句的分析。

IK Analyzer:中文分词器

8.ES的分片

每个分片都有自己的分片ID,用于区分不同的分片。分片的数量是在创建索引时指定的,每个分片会被分配到不同的节点上,分片之间可以互相通信,相互协作完成查询和索引的任务。

分片类型

ElasticSearch 支持两种类型的分片:主分片(Primary Shard)和副本分片(Replica Shard)。主分片是数据的原始分片,副本分片是主分片的复制,用于实现数据的冗余和高可用性。每个主分片可以有多个副本分片,副本分片的数量可以通过索引的设置进行配置。

主分片和副本分片的区别在于,主分片是可写的,而副本分片是只读的。当主分片接收到写操作时,它会将更新操作发送给所有副本分片,副本分片在收到更新操作后会进行相应的更新。这个过程被称为分布式索引。

分片分配

在分片的实现中,ElasticSearch 采用了哈希算法来决定文档应该被分配到哪个分片中。具体来说,ElasticSearch 会对每个文档的主键进行哈希计算,然后根据哈希值将文档分配到对应的主分片中。副本分片会被分配到不同的节点上,以实现数据的冗余和高可用性。

分片查询

在查询时,Elasticsearch 会将查询请求发送到每个分片上,每个分片都会返回与查询相关的文档,然后 Elasticsearch 会将这些文档合并并返回给用户。这种分布式的查询方式可以极大地提高查询效率和可扩展性。

9.ES中的地理位置查询

当进行地理位置查询时,ElasticSearch可以根据地理位置信息搜索数据。其作用是通过用户提供的地理位置信息(如经度和纬度)来搜索地理位置附近的文档,用于实现基于位置的搜索,如搜索某个地点附近的商家、附近的景点等等

10.ElasticSearch 的性能调优有哪些方面?请简要说明各方面的优化策略。

Elasticsearch的性能调优可以从多个方面入手,以下是一些常用的优化策略

硬件优化

  •  增加内存:Elasticsearch是基于内存进行操作的,增加内存可以提高索引和搜索的速度。
  • 增加CPU:Elasticsearch对CPU的使用较为频繁,因此增加CPU可以提高查询性能。
  • 增加磁盘:Elasticsearch需要频繁的磁盘读写操作,因此增加磁盘可以提高性能。

索引设计优化

  • 避免大量的分片和副本:分片和副本虽然可以提高Elasticsearch的可靠性,但是会增加集群的负载和复杂度,因此应该根据实际情况合理设置。
  • 合理设置分词器:分词器可以将文本分成合适的词汇进行索引,合理设置分词器可以提高搜索的准确性。
  • 合理设置索引字段:合理设置索引字段可以减少索引的大小,提高索引和搜索的速度。

查询优化

  • 使用过滤器替代查询:过滤器的性能要优于查询,因此如果能够使用过滤器来替代查询,可以大大提高查询的性能。
  • 避免使用通配符查询:通配符查询会影响Elasticsearch的性能表现,应尽量避免使用。
  • 合理使用缓存:Elasticsearch提供了缓存机制,可以缓存查询结果,提高查询性能。

集群配置优化

  • 合理设置分片和副本:根据实际情况合理设置分片和副本可以提高集群的性能和可靠性。
  • 合理设置集群路由策略:集群路由策略可以决定索引和搜索操作的路由方式,合理设置可以提高集群的性能表现。
  • 合理配置节点:节点是Elasticsearch的核心组件之一,合理配置节点可以提高集群的性能表现。

11.ES中的搜索排序

  • 按文档得分排序:默认情况下,Elasticsearch会按照相关性得分来排序。相关性得分是一种衡量查询与文档匹配程度的指标,通常是通过TF-IDF算法计算得出的
  • 按字段值排序:可以按照某个字段的值来排序,如按日期、数字值等。
  • 按地理位置排序:可以按照某个地理位置字段的距离来排序,如按照距离某个地点的远近排序。
  • 自定义排序:可以自定义排序规则,如按照某个字段的值或者其他算法的结果来进行排序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值