ES入门知识点总结

目录

倒排索引


倒排索引

Elasticsearch的倒排索引是一种数据结构,用于加快基于文本的搜索操作。它的主要优势在于能够快速找到包含特定单词的文档。

倒排索引的构建过程如下:

  1. 文档分词:将文档内容分割成单独的词(或者更小的词元,如果是中文的话是分词)。

  2. 创建词典:创建一个包含所有不重复词的列表,也称为词典。

  3. 创建排序列表:对于词典中的每个词,创建一个排序列表,列出所有包含该词的文档ID。

倒排索引的理解可以通过以下例子来说明:

假设我们有两个文档,每个文档的内容如下:

文档1: "The quick brown fox jumped over the lazy dog."

文档2: "Quick brown foxes leap over lazy dogs in summer."

我们将这些文档发送给Elasticsearch进行索引,它将创建一个倒排索引,如下所示:

词典(terms):

复制代码
Term      Doc_1  Doc_2
-------------------------
Quick   |       |  X
The     |   X   |
brown   |   X   |  X
dog     |   X   |
dogs    |       |  X
fox     |   X   |
foxes   |       |  X
in      |       |  X
jumped  |   X   |
lazy    |   X   |  X
leap    |       |  X
over    |   X   |  X
quick   |   X   |
summer  |       |  X
the     |   X   |
------------------------

排序列表(postings list):

复制代码
Term      Doc_1  Doc_2
-------------------------
brown   |   X   |  X
dog     |   X   |  X
fox     |   X   |  X
in      |       |  X
jump    |   X   |  X
lazy    |   X   |  X
over    |   X   |  X
quick   |   X   |  X
summer  |       |  X
the     |   X   |  X
------------------------

排序列表(倒排列表)通常包含以下信息:

  • 文档ID:包含词的文档的唯一标识符。

  • 词频(TF):文档中词出现的次数。

  • 位置(Position):词在文档中的位置信息。

  • 偏移量(Offset):词在文档中的开始和结束位置。

现在,如果我们想搜索 quick brown ,我们只需要查找包含每个词条的文档:

复制代码
Term      Doc_1  Doc_2
-------------------------
brown   |   X   |  X
quick   |   X   |
------------------------
Total   |   2   |  1

两个文档都匹配,但是第一个文档比第二个匹配度更高。

这就是Elasticsearch倒排索引的基本概念。

分片与副本机制

Elasticsearch 的分片和副本机制是确保集群高可用性和数据安全性的关键。

分片(Shard):

分片是Elasticsearch在集群中分发数据的方式。将大量数据分散到多个分片中,可以提高搜索和其他操作的性能。

副本(Replica):

副本是分片的副本,用于提供高可用性。当主分片(Leader)不可用时,副本分片(Follower)可以被提升为新的主分片。

创建索引时,可以定义分片数和副本数。例如,使用Elasticsearch的REST API创建一个有3个主分片和每个分片有一个副本的索引:

复制代码
PUT /my_index
{
  "settings": {
    "number_of_shards": 3,
    "number_of_replicas": 1
  }
}

R0、R1、R2为P0、P1、P2的备份副本。

ElasticSearch各版本特性

5.x新特性

  • Lucene 6.x, 性能提升,默认打分机制从TF-IDF改为BM 25
  • 支持Ingest节点/ Painless Scripting / Completion suggested支持/原生的Java REST客户端Type标记成deprecated, 支持了Keyword的类型
  • 性能优化
  1. 内部引擎移除了避免同一文档并发更新的竞争锁,带来15% - 20%的性能提升
  2. Instant aggregation,支持分片,上聚合的缓存
  3. 新增了Profile API

6.x新特性

  • Lucene 7.x
  • 新功能
  1. 跨集群复制(CCR)
  2. 索引生命周期管理
  3. SQL的支持
  • 更友好的的升级及数据迁移
  1. 在主要版本之间的迁移更为简化,体验升级
  2. 全新的基于操作的数据复制框架,可加快恢复数据
  • 性能优化
  1. 有效存储稀疏字段的新方法,降低了存储成本
  2. 在索引时进行排序,可加快排序的查询性能

7.x新特性

  • Lucene 8.0
  • 重大改进-正式废除单个索引下多Type的支持
  • 7.1开始,Security 功能免费使用
  • ECK - Elasticseach Operator on Kubernetes
  • 新功能
  1. New Cluster coordination
  2. Feature------Complete High Level REST Client
  3. Script Score Query
  • 性能优化
  1. 默认的Primary Shard数从5改为1,避免Over Sharding
  2. 性能优化, 更快的Top K

8.x新特性

  • Rest API相比较7.x而言做了比较大的改动(比如彻底删除_type)
  • 默认开启安全配置
  • 存储空间优化:对倒排文件使用新的编码集,对于keyword、match_only_text、 text类型字段有效,有3.5%的空间优化提升,对于新建索引和segment自动生效。
  • 优化geo_point,geo_shape类型的索引(写入)效率:15%的提升。
  • 技术预览版KNN API发布,(K邻近算法),跟推荐系统、自然语言排名相关。

https://www.elastic.co/guide/en/elasticstack/current/elasticsearchbreaking
changes.html

相关推荐
阿里云大数据AI技术1 天前
阿里云荣获 2025–2026 年度 Elastic中国最佳合作伙伴奖
人工智能·elasticsearch
vpk1121 天前
【无标题】
运维·elasticsearch·docker
綮地1 天前
ES备份脚本
大数据·elasticsearch·搜索引擎
三水不滴1 天前
Elasticsearch 实战系列(二):SpringBoot 集成 Elasticsearch,从 0 到 1 实现商品搜索系统
经验分享·spring boot·笔记·后端·elasticsearch·搜索引擎
老陈头聊SEO1 天前
优化SEO效果的长尾关键词运用与关键词调整策略分析
其他·搜索引擎·seo优化
奋斗者1号1 天前
解决Git Push Gerrit分支失败的全流程实战
大数据·git·elasticsearch
小白学大数据1 天前
如何判断网站流量飙升是搜索引擎爬虫导致的?
爬虫·scrapy·搜索引擎·pycharm
margu_1681 天前
【Elasticsearch】es7.2 跨集群迁移大量数据
elasticsearch
老陈头聊SEO1 天前
AI提升SEO关键词策略的创新应用与实践指南
其他·搜索引擎·seo优化
常利兵1 天前
Spring Boot 邂逅Elasticsearch:打造搜索“光速引擎”
spring boot·elasticsearch·jenkins