elastic基础知识

本文涉及的产品
RDS MySQL DuckDB 分析主实例,集群系列 4核8GB
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
RDS Agent(兼容OpenClaw),2核4GB
简介: ElasticSearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够结果不断涌现出的各种用例。作为Elastic Stack的核心,它集中存储数据、帮助您发现意料之中及意料之外的情况。

一、ElasticSearch简介

ElasticSearch是一个分布式、RESTful风格的搜索和数据分析引擎,能够结果不断涌现出的各种用例。作为Elastic Stack的核心,它集中存储数据、帮助您发现意料之中及意料之外的情况。

二、全文检索

全文检索是指计算机程序通过扫描文章中的每一个词,对必要的词建立一个索引,指明该词在文章中出现的次数和位置。当用户查询时根据建立的索引查找,类似于通过字典的检索查找汉字的过程。

全面、准确和快速时衡量全文检索系统的关键指标。

关于全文检索工具,我们要知道:

只处理文本

不处理语义

结果列表有相关度排序

可以对关键字予以高亮显示

可以根据输入给出建议关键字

(一)正排索引

  正排索引是指以文档ID为key,表中记录每个关键词出现的次数,查找时扫描表中的每个文档中字的信息,直到找到所有包含查询关键字的文档,类似mysql表数据的存储形式,每一行都有一个主键,通过主键与数据进行关联。正排索引会记录每个文章中每个单词出现的次数,每个词在文章中出现的位置。正排索引时以文档ID作为索引,但是在搜索的时候基本上都是使用关键词搜索,索引在搜索过程中会把所有文档都扫描一遍,找出其中包含由关键词的文档,然后再进行排序等其它操作,查询效率非常低。

此时如果要搜索文档内容包含有“疫情”的数据

select * from table where content like '%疫情%',这种查询效率非常低。

(二)倒排索引

倒排索引是以关键词作为索引,同时记录了这个关键词所出现的文档ID和这个关键词在文档中出现的次数、位置信息。根据关键词快速获取包含这个关键词的文档列表

倒排索引由单词字典、倒排文件组成。

单词词典:文档集合中所有单词构成的字符串集合,单词词典内每条索引项记载单词本身的一些信息以及指向“倒排列表”的指针。

倒排列表:倒排列表记载了出现过某个单词的所有文档的文档列表及单词在该文档中出现的位置信息,每条记录称为一个倒排项(Posting)。根据倒排列表,即可获知哪些文档包含某个单词。

倒排文件:存储倒排索引的物理文件,所有单词倒排列表顺序存储在磁盘的某个文件里。

简单的倒排索引

在此倒排索引中只记录了包含某个单词的文档列表及在文档中出现的次数,实际的倒排索引中还包含有,单词在文档中出现的位置信息。

三、名词术语


3.1索引(index)

  • 一个索引就是一个拥有几分相似特征的文档的集合,比如说,新闻的索引可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引
  • 一个索引由一个名字来标识(必须全部是小写字母),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字
  • 在一个集群中,可以定义任意多的索引,能搜索的数据必须索引,这样的好处是可以提高查询速度,比如:新华字典前面的目录就是索引的意思,目录可以提高查询速度
  • Elasticsearch索引的精髓:一切设计都是为了提高搜索的性能

3.2文档(document)

一个文档是一个可被索引的基础信息单元,类似与mysql中的一行数据,文档以JSON(Javascript Object Notation)格式来表示。

3.3字段(field)

相当于是数据表的字段,对文档数据根据不同属性进行的分类标识

3.4映射(mapping)

mapping是处理数据的方式和规则方面做一些限制,如:某个字段的数据类型、默认值、分析器、是否被索引等等,类似与数据库中每个字段的类型

3.5索引词

在 Elasticsearch中索引词(term)是一个能够被索引的精确值

3.6文本

  • 文本是一段普通的非结构化文字,相当于原始数据
  • 通常文本会被分析成一个个的索引词,存储在 Elasticsearch的索引库中
  • 为了让文本能够进行搜索,文本字段需要事先进行分析
  • 当对文本中的关键词进行查询的时候,搜索引擎应该根据搜索条件搜索出原文本

3.7分析

analysis(只是一个概念),文本分析是将全文本转换为一系列单词的过程,也叫分词。analysis是通过analyzer分词器来实现的,可以使用Elasticsearch内置的分词器,也可以自己去制定一些分词器。除了在数据写入的时候将词条进行转换,在查询的时候也可以指定分词器对语句进行分析。

3.8集群

  • 集群由一个或多个节点组成,对外提供服务
  • 在所有节点,一个集群有一个唯一的名称,此名称很重要,因为每个节点只能是集群的一部分,当该节点被设置为相同的集群名称时,就会自动加入集群
  • 当需要有多个集群的时候,要确保每个集群的名称不能重复,否则,节点可能会加入错误的集群
  • 请注意,一个节点只能加入一个集群。此外,还可以拥有多个独立的集群,每个集群都有其不同的集群名称。

3.9节点

  • 一个节点是一个逻辑上独立的服务,它是集群的一部分,可以存储数据,并参与集群的索引和搜索功能。就像集群一样,节点也有唯一的名字,在启动的时候分配。如果你不想要默认名称,你可以定义任何你想要的节点名
  • 这个名字在管理中很重要,在网络中 Elasticsearch集群通过节点名称进行管理和通信
  • 一个节点可以被配置加入一个特定的集群。
  • 当网络没有集群运行的时候,只要启动任何一个节点,这个节点会默认生成一个新的集群,这个集群会有一个节点

3.10分片

  • 分片数据存储的逻辑单元
  • 索引是指向主分片和副本分片的逻辑空间,对于使用,只需要指定分片的数量,其他不需要做过多的事情
  • 在开发使用的过程中,我们对应的对象都是索引,Elasticsearch会自动管理集群中所有的分片,当发生故障的时候,Elasticsearch 会把分片移动到不同的节点或者添加新的节点
  • 一个索引可以存储很大的数据,这些空间可以超过一个节点的物理存储的限制。例如,十亿个文档占用磁盘空间为 1TB,仅从单个节点搜索可能会很慢,一台机器也不一定能存储这么多的数据,为了解决这一问题,Elasticsearch将索引分解成多个分片,当创建一个索引,可以简单地定义想要的分片数量
  • 每个分片本身是一个全功能的、独立的单元,可以托管在集群中的任何节点

3.12主分片

  • 每个文档都存储在一个分片中,当你存储一个文档的时候,系统会首先存储在主分片中,然后会复制到不同的副本中
  • 可以事先制定分片的数量,当分片一旦建立,则分片的数量不能修改

3.13副本分片

  • 每一个分片有零个或多个副本,副本主要是主分片的复制
  • 高可用性:当主分片失败的时候,可以从副本分片中选择一个作为主分片
  • 提高性能:当查询的时候可以到主分片或者副本分片中进行查询
  • 默认情况下,一个主分片配有一个副本,但副本的数量可以在后面动态地配置增加
  • 副本分片必须部署在不同的节点上,不能部署在和主分片相同的节点上

四、MySql与elasticsearch对比

Mysql

ElasticSearch

table

index

row

document

column

field

schema

mapping

index

everything is indexed

sql

query dsl

select * from table

get http://

update table set

post http:// put http://

group by / avg / sum

aggregations

去重 distinct

cardinality

数据迁移

reindex

相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
2天前
|
人工智能 JSON 供应链
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
LucianaiB分享零成本畅用JVS Claw教程(学生认证享7个月使用权),并开源GeoMind项目——将JVS改造为科研与产业地理情报可视化AI助手,支持飞书文档解析、地理编码与腾讯地图可视化,助力产业关系图谱构建。
23281 2
畅用7个月无影 JVS Claw |手把手教你把JVS改造成「科研与产业地理情报可视化大师」
|
4天前
|
人工智能 API 开发工具
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
Claude Code是我目前最推荐的AI编程工具,没有之一。 它可能不是最简单的,但绝对是上限最高的。一旦跑通安装、接上模型、定好规范,你会发现很多原本需要几小时的工作,现在几分钟就能搞定。 这套方案的核心优势就三个字:可控性。你不用依赖任何不稳定服务,所有组件都在自己手里。模型效果不好?换一个。框架更新了?自己决定升不升。 这才是AI时代开发者该有的姿势——不是被动等喂饭,而是主动搭建自己的生产力基础设施。 希望这篇保姆教程,能帮你顺利上车。做出你自己的作品。
7204 17
Claude Code国内安装:2026最新保姆教程(附cc-switch配置)
|
12天前
|
缓存 人工智能 自然语言处理
我对比了8个Claude API中转站,踩了不少坑,总结给你
本文是个人开发者耗时1周实测的8大Claude中转平台横向评测,聚焦Claude Code真实体验:以加权均价(¥/M token)、内部汇率、缓存支持、模型真实性及稳定性为核心指标。
4507 24
|
7天前
|
人工智能 JSON BI
DeepSeek V4 来了!超越 Claude Sonnet 4.5,赶紧对接 Claude Code 体验一把
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro 的真实体验与避坑记录 本文记录我将 Claude Code 对接 DeepSeek 最新模型(V4Pro)后的真实体验,测试了 Skills 自动化查询和积木报表 AI 建表两个场景——有惊喜,也踩
3156 10
|
6天前
|
人工智能 缓存 BI
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
JeecgBoot AI专题研究 把 Claude Code 接入 DeepSeek V4Pro,跑完 Skills —— OA 审批、大屏、报表、部署 5 大实战场景后的真实体验 ![](https://oscimg.oschina.net/oscnet/up608d34aeb6bafc47f
2598 8
Claude Code + DeepSeek V4-Pro 真实评测:除了贵,没别的毛病
|
24天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
20147 61
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)