ElasticSearch 的核心功能

要深入理解 ElasticSearch 的核心功能,需要全面掌握其 全文搜索分析聚合索引生命周期管理(ILM) 的设计原理和实际应用。


1. 全文搜索

ElasticSearch 的全文搜索是其核心功能之一,依赖于倒排索引和强大的分词、相关性评分机制。

(1) 倒排索引
  • 倒排索引是 ElasticSearch 的底层数据结构,记录每个词条(term)在哪些文档中出现。
  • 优化了基于关键词的搜索性能。
(2) 分词(Analysis)

ElasticSearch 提供灵活的分词机制,将文档字段分解为独立的词条。

  • 分词器(Analyzer):
    • 包括字符过滤器、分词器、和词条过滤器。
    • 示例:Text: "The quick brown fox"
      • 字符过滤器:去除 HTML 标签等。
      • 分词器:["The", "quick", "brown", "fox"]
      • 词条过滤器:去除停用词,如 ["quick", "brown", "fox"]
  • 常用分词器:standardsimplewhitespacengram
(3) 查询 DSL

ElasticSearch 提供强大的查询语言:

  • match 查询: 适用于全文检索,分词后匹配。
    {"query": {"match": {"content": "quick fox"}}
    }
    
  • term 查询: 精确匹配,不分词。
  • 布尔查询: 将多个子查询组合,使用 mustshouldfilter 等。
(4) 相关性评分

ElasticSearch 使用 BM25 算法计算文档与查询的相关性,基于以下因素:

  • 词频(TF): 词在文档中出现的次数。
  • 逆文档频率(IDF): 词的稀有程度。
  • 字段长度: 长字段对匹配的影响更小。

2. 分析(Analysis)

ElasticSearch 不仅支持全文搜索,还提供强大的数据分析功能,帮助用户从大规模数据中提取有价值的洞见。

(1) 聚合框架

聚合(Aggregation)是一种用于分组、计算和统计数据的机制。

  • 分类:

    • 桶(Bucket): 按条件对文档分组,如按日期、地理位置。
    • 度量(Metric): 统计数据的数值特征,如最大值、最小值、平均值。
    • 管道(Pipeline): 对其他聚合的结果进行二次处理。
  • 示例:计算每月销售额

    {"aggs": {"monthly_sales": {"date_histogram": {"field": "sale_date","calendar_interval": "month"},"aggs": {"total_sales": {"sum": {"field": "amount"}}}}}
    }
    
(2) 实时和分布式处理
  • ElasticSearch 的分布式架构允许在多节点上并行执行聚合,显著提高性能。
(3) 向量搜索(Vector Search)

支持基于嵌入向量的相似性搜索,特别适用于推荐系统和自然语言处理(NLP)任务。


3. 聚合(Aggregation)

(1) 常见聚合类型
  1. 计数(Count):
    • 统计文档数量。
  2. 求和(Sum):
    • 计算字段值的总和。
  3. 平均值(Avg):
    • 计算字段值的平均值。
  4. 分布分析:
    • 按字段值分组,计算分布情况。
(2) 使用场景
  • 数据报表: 如按地域分布的用户量。
  • 性能监控: 按时间段计算指标变化。
  • 日志分析: 计算错误日志出现的频率。

4. 索引生命周期管理(ILM)

(1) 什么是 ILM?

索引生命周期管理(Index Lifecycle Management,ILM)用于自动管理索引的生命周期,降低存储和性能成本。
索引的生命周期通常分为以下阶段:

  • 热(Hot): 索引写入和搜索频繁。
  • 温(Warm): 索引只读,搜索频率降低。
  • 冷(Cold): 索引使用频率非常低。
  • 删除(Delete): 索引到达保留期限后被删除。
(2) ILM 策略

定义一个 ILM 策略包含以下部分:

  • 触发条件: 如索引大小、时间。
  • 动作(Action): 例如关闭索引、迁移分片、删除索引。

示例策略:

{"policy": {"phases": {"hot": {"actions": {"rollover": {"max_size": "50gb","max_age": "30d"}}},"warm": {"actions": {"shrink": {"number_of_shards": 1}}},"cold": {"actions": {"allocate": {"include": {"data": "cold"}}}},"delete": {"actions": {"delete": {}}}}}
}
(3) 使用场景
  • 日志管理: 定期归档和删除旧日志。
  • 成本优化: 热数据使用 SSD,冷数据使用 HDD。

总结

ElasticSearch 的核心功能以全文搜索为基础,同时提供灵活的数据分析能力(聚合)、优化的分布式架构以及对索引生命周期的精细管理。结合实际应用场景,ElasticSearch 可以处理从实时搜索到复杂分析的大量任务,在企业搜索引擎、日志管理、推荐系统等领域发挥关键作用。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/64072.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Nginx单向链表 ngx_list_t

目录 基本概述 数据结构 接口描述 具体实现 ngx_list_create ngx_list_init ngx_list_push 使用案例 整理自 nginx 1.9.2 源码 和 《深入理解 Nginx:模块开发与架构解析》 基本概述 Nginx 中的 ngx_list_t 是一个单向链表容器,链表中的每一个节…

软件项目需求分析的实践探索(1)

一、项目启动与规划 组建团队 包括项目经理、系统分析师、业务分析师以及可能涉及的最终用户代表和领域专家等。例如,开发一个医疗管理软件,就需要有医疗行业的专家参与,确保对医疗业务流程有深入理解。明确各成员的职责,如系统分…

网络管理-期末项目(附源码)

环境:网络管理 主机资源监控系统项目搭建 (保姆级教程 建议点赞 收藏)_搭建网络版信息管理系统-CSDN博客 效果图 下面3个文件的项目目录(python3.8.8的虚拟环境) D:\py_siqintu\myproject5\Scripts\mytest.py D:\py_siqintu\myproject5\Sc…

MySQL 常用程序介绍

以下是一些常用的MySQL程序: 程序名作⽤mysqldMySQL的守护进程即 MySQL 服务器,要使⽤MySQL 服务器 mysqld必须正在运⾏状态mysql MySQL客⼾端程序,⽤于交互式输⼊ SQL 语句或以批处理模式从⽂件执⾏SQL的命令⾏⼯具 mysqlcheck⽤于检查、修…

Redis篇--常见问题篇4--大Key(Big Key,什么是大Key,影响及使用建议)

1、概述 大Key:通常是指值(Value)的长度非常大,实际上键(Key)长度很大也算。通常来说,键本身不会很长,占用的内存较少,因此判断一个键是否为bigKey主要看它对应的值的大…

ModbusTCP从站转Profinet主站案例

一. 案例背景 在复杂的工业自动化场景中,企业常常会采用不同品牌的设备来构建生产系统。西门子SINAMICS G120变频器以其高性能、高精度的速度和转矩控制功能,在电机驱动领域应用广泛。施耐德M580可编程逻辑控制器则以强大的逻辑控制和数据处理能力著称&…

微信小程序-基于Vant Weapp UI 组件库的Area 省市区选择

Area 省市区选择,省市区选择组件通常与 弹出层 组件配合使用。 areaList 格式 areaList 为对象结构,包含 province_list、city_list、county_list 三个 key。 每项以地区码作为 key,省市区名字作为 value。地区码为 6 位数字,前两…

智驾感知「大破局」!新一轮混战开启

随着智能驾驶搭载率的攀升,舱外传感器赛道迎来新变局。 一方面,从近几年智驾传感器的配置变化来看,摄像头的主导地位显而易见。 12月10-12日,由德赛西威总冠名的2024(第八届)高工智能汽车年会暨年度金球奖…

Kibana8.17.0在mac上的安装

1、Kibana是什么 Kibana是与elasticsearch配套使用的数据分析与可视化工具,通过Kibana可以轻松与es中存储的数据进行高效的交互,包括数据写入、检索、删除等操作,并可以通过编写部分代码将数据做成各种报表,从而进行非常直观的统…

数字IC后端设计实现十大精华主题分享

今天小编给大家分享下吾爱IC社区星球上周十大后端精华主题。 Q1:星主,请教个问题,长tree的时候发现这个scan的tree 的skew差不多400p,我高亮了整个tree的schematic,我在想是不是我在这一系列mux前边打断,设置ignore p…

给bmp和png,设置BLENDFUNCTION的AlphaFormat不同参数的效果

BLENDFUNCTION是AlphaBlend用控制透明效果的重要参数。 选择一个32位的png图片,设置AlphaFormat 为 AC_SRC_ALPHA,效果如上图。 选择一个32位的png图片,设置AlphaFormat 为 0,效果如上图。 选择一个24位的bmp图片,设置…

ChildLife“童年时光杯”足球联赛启动 共促青少年健康成长

2024年12月21日至22日,由美国知名婴幼儿营养品牌ChildLife童年时光赞助的“童年时光杯”青少年足球联赛将在上海拉开帷幕。本次赛事U7/U8组别共有16支足球队参赛,包括上海幸运星足球俱乐部旗下的明星球队,以及其他青少年俱乐部的优秀队伍&…

MTK--mt7921 usb wifi debug

文章目录 1、代码编译2、配置文件修改3、Wifi设置命令4、Wifi debug 淘宝随便买个7921的usb wifi。 1、代码编译 export TEMPLATECONF${PWD}/meta/meta-mediatek-mt8518/conf/base/aud8518sp2-slc-32b-7921-c4a-user source meta/poky/oe-init-build-env bitbake mtk-image-au…

如何配置OSB连接数据连接/读取超时

1.Oracle DB OSB中的DBAdapter的查询超时参数配置没用,要解决接口超时问题,需要在console中的数据源配置超时参数: oracle.net.CONNECT_TIMEOUT30000 oracle.net.READ_TIMEOUT30000 添加图片注释,不超过 140 字(可选…

一起学Git【第六节:查看版本差异】

git diff是 Git 版本控制系统中用于展示差异的强大工具。他可以用于查看文件在工作区、暂存区和版本库之间的差异、任意两个指定版本之间的差异和两个分支之间的差异等,接下来进行详细的介绍。 1.显示工作区与暂存区之间的差异 # 显示工作区和暂存区之间的差异,后面不加参数…

Python数据处理——re库与pydantic的使用总结与实战,处理采集到的思科ASA防火墙设备信息

目录 Python正则表达式re库的基本用法 引入re库 各函数功能 总结 使用方法举例 正则表达式语法与书写方式 正则表达式的常用操作符 思科ASA防火墙数据 数据1 数据2 书写正则表达式 Python中pydantic的使用 导入基础数据模板 根据数据采集目标定义Pydantic数据类型…

`we_chat_union_id IS NOT NULL` 和 `we_chat_union_id != ‘‘` 这两个条件之间的区别

文章目录 1、什么是空字符串?2、两个引号之间加上空格 好的,我们来详细解释一下 we_chat_union_id IS NOT NULL 和 we_chat_union_id ! 这两个条件之间的区别,以及它们在 SQL 查询中的作用: 1. we_chat_union_id IS NOT NULL 含…

如何利用AWS监听存储桶并上传到tg bot

业务描述: 需要监听aws的存储中的最新消息,发送新的消息推送到指定tg的频道。 主要流程: 1.上传消息到s3存储桶(不做具体描述) 2.通过aws的lambda监听s3存储桶的最新消息(txt文件) 3.将txt文件…

HarmonyOS NEXT 实战之元服务:静态案例效果---查看国内航班服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: Index代码 import { authen…

Windows11家庭版启动Hyper-V

Hyper-V 是微软的硬件虚拟化产品,允许在 Windows 上以虚拟机形式运行多个操作系统。每个虚拟机都在虚拟硬件上运行,可以创建虚拟硬盘驱动器、虚拟交换机等虚拟设备。使用虚拟化可以运行需要较旧版本的 Windows 或非 Windows 操作系统的软件,以…