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

相关推荐
bubble小拾4 小时前
ElasticSearch高级功能详解与读写性能调优
大数据·elasticsearch·搜索引擎
不能放弃治疗5 小时前
重生之我们在ES顶端相遇第 18 章 - Script 使用(进阶)
elasticsearch
hengzhepa6 小时前
ElasticSearch备考 -- Search across cluster
学习·elasticsearch·搜索引擎·全文检索·es
Elastic 中国社区官方博客7 小时前
Elasticsearch:使用 LLM 实现传统搜索自动化
大数据·人工智能·elasticsearch·搜索引擎·ai·自动化·全文检索
慕雪华年8 小时前
【WSL】wsl中ubuntu无法通过useradd添加用户
linux·ubuntu·elasticsearch
Elastic 中国社区官方博客10 小时前
使用 Vertex AI Gemini 模型和 Elasticsearch Playground 快速创建 RAG 应用程序
大数据·人工智能·elasticsearch·搜索引擎·全文检索
alfiy11 小时前
Elasticsearch学习笔记(四) Elasticsearch集群安全配置一
笔记·学习·elasticsearch
alfiy12 小时前
Elasticsearch学习笔记(五)Elastic stack安全配置二
笔记·学习·elasticsearch
sp_fyf_20241 天前
[大语言模型-论文精读] 更大且更可指导的语言模型变得不那么可靠
人工智能·深度学习·神经网络·搜索引擎·语言模型·自然语言处理
丶21361 天前
【大数据】Elasticsearch 实战应用总结
大数据·elasticsearch·搜索引擎