ElasticSearch(二)简介

news2025/4/21 14:17:54

1. 简介

Elasticsearch 是一个分布式、高扩展、高实时的搜索与数据分析引擎。

它能很方便的使大量数据具有搜索、分析和探索的能力。充分利用Elasticsearch的水平伸缩性,能使数据在生产环境变得更有价值。

Elasticsearch 的实现原理主要分为以下几个步骤,首先用户将数据提交到Elasticsearch 数据库中,再通过分词控制器去将对应的语句分词,将其权重和分词结果一并存入数据,当用户搜索数据时候,再根据权重将结果排名,打分,再将返回结果呈现给用户。

2. 相关名词解析

2.1 数据分类

  1. 结构化数据:固定格式,有限长度
  2. 非结构化数据:不定长,无固定格式
  3. 半结构化数据:前两者结合,比如xml,html

2.2 搜索分类

  1. 结构化数据搜索:使用关系型数据库
  2. 非结构化数据搜索:顺序扫描、全文检索

2.3 全文检索

全文检索是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。这个过程类似于通过字典中的检索字表查字的过程。

2.4 倒排索引

倒排索引源于实际应用中需要根据属性的值来查找记录。这种索引表中的每一项都包括一个属性值和具有该属性值的各记录的地址。 由于不是由记录来确定属性值,而是由属性值来确定记录的位置,因而称为倒排索引(inverted index)。 带有倒排索引的文件我们称为倒排索引文件,简称倒排文件(inverted file)。

2.5 ElasticSearch的基本概念

2.5.1 索引(Index)

一个索引就是一个拥有几分相似特征的文档的集合。 比如说,可以有一个客户数据的索引,另一个产品目录的索引,还有一个订单数据的索引。

一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对对应于这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。

在这里插入图片描述

2.5.2 文档(Document)

Elasticsearch是面向文档的,文档是所有可搜索数据的最小单位。

例:

  • 日志文件中的日志项
  • 一本电影的具体信息/一张唱片的详细信息
  • MP3播放器里的一首歌/一篇PDF文档中的具体内容

文档会被序列化成JSON格式,保存在Elasticsearch中

特性:

  1. JSON对象由字段组成
  2. 每个字段都有对应的字段类型(字符串/数值/布尔/日期/二进
    制/范围类型)
  3. 每个文档都有一个Unique ID
  4. 一篇文档包含了一系列字段,类似数据库表中的一条记录
  5. JSON文档,格式灵活,不需要预先定义格式(字段的类型可以指定或者通过Elasticsearch自动推算、支持数组/支持嵌套)

文档元数据:

在这里插入图片描述

  1. _index:文档所属的索引名
  2. _type:文档所属的类型名
  3. _id:文档唯—ld
  4. _source: 文档的原始Json数据
  5. _version: 文档的版本号,修改删除操作_version都会自增1
  6. _seq_no: 和_version一样,一旦数据发生更改,数据也一直是累计的。Shard级别严格递增,保证后写入的Doc的_seq_no大于先写入的Doc的_seq_no
  7. _primary_term: _primary_term主要是用来恢复数据时处理当多个文档的
    _seq_no一样时的冲突,避免Primary Shard上的写入被覆盖。每当Primary Shard发生重新分配时,比如重启,Primary选举等,_primary_term会递增1
2.5.3 ElasticSearch和关系型数据库的对比
数据库
关系型数据库DataBase(数据库)Table(表)Row(行)Column(列)
ElasticSearchIndex(索引)Type(类型)Document(文档)Field(字段)

3. ElasticSearch历代版本特性

3.1 5.x

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

3.2 6.x

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

3.3 7.x

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

3.4 8.x

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

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

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

相关文章

Servlet执行原理和API详解

一、HttpServlet 我们写 Servlet 代码的时候, 首先第⼀步就是先创建类, 继承⾃ HttpServlet, 并重写其中的某些方法. 1.1核心方法 1.2处理GET或POST请求 1.3数据的两种提交方式 数据提交有两种方式: form 表单提交ajax 提交 1.3.1form 表单提交 form表单提交的…

瑞萨e2studio(24)----电容触摸配置(1)

瑞萨e2studio.20--电容触摸配置1 概述硬件准备新建工程工程模板保存工程路径芯片配置工程模板选择时钟配置添加TOUCH驱动配置CapTouch开启调优界面启动 CapTouch 调优通过电容触摸点亮LED 概述 这篇文档将创建一个使用 e2 studio 集成 QE 的电容式触摸应用示例,通…

C语言函数大全-- s 开头的函数(3)

C语言函数大全 本篇介绍C语言函数大全-- s 开头的函数(3) 1. sleep 1.1 函数说明 函数声明函数功能unsigned int sleep(unsigned int seconds);它是 C 语言标准库中的函数,用于使当前进程挂起一定的时间。在挂起期间,操作系统…

移动宽带安装说明一(刘欣)

2023年,五一假期给老家和父母家安装了2次宽带,记录一下吧。 一、移动光改覆盖率已经很高了 从当初的铁通“FTTB”覆盖小区,网线入户的带宽只能达到100M,提升到现在大面积的光改完成,普遍是光猫(光纤MODEL&#xff09…

网络协议与攻击模拟-04-实施ARP攻击与欺骗

实施 ARP 欺骗和攻击 一、环境 1、 kali Linux 安装一个 arpspoof 2、win10 被攻击主机 二、 kaili 配置 kali Linux 系统是基于 debian Linux 系统,采用 deb 包管理方式,可以使用 apt 的方式进行直接从源安装 1、配置源 # 官方源 # deb http:/…

FastAPI如何区分多环境:开发/测试/预发布/生产环境

1 缘起 开始用FastAPI开发项目, 区分环境是部署的第一步,因此,需要区分dev/test/pre/prod等环境, 而FastAPI刚好提供了读取环境配置文件的参数,可以在启动服务时指定环境配置文件的路径, 参数为env_file&a…

【前端技术】Vue3 01:初识 Vue.js

Vue 可以说是非常流行了,至少在国内是这样,他是个轻量级的 JavaScript 框架,非常适合构建大型和中小型的 Web 应用程序,如果想和前端打交道,应该绕不过这个框架吧。 目录 1 Vue.js 介绍 2 IDE 选择 2.1 vscode 2.…

libfacedetection 人脸检测库的基本使用

目录 1、源码下载 2、编译 3、构建工程 4、个人总结 运行总结: 与CascadeClassifier级联分类器 人脸检测 对比: 1、源码下载 直接从github上克隆项目仓库。 git clone https://github.com/ShiqiYu/libfacedetection.git2、编译 这个项目使用了cmake脚本&#…

【LeetCode】413. 等差数列划分

413. 等差数列划分(中等) 思路 由于题目求的是等差数列 ,很自然想到子数组一定满足 nums[i] - nums[i-1] nums[i-1] -nums[i-2]; 。然而我们对于 dp 数组的定义通常是以 i 结尾,满足某些条件的子数组数量,而等差数组可…

【LeetCode】300. 最长递增子序列

300. 最长递增子序列(中等) 方法一:动态规划 思路 通常来说,子序列不要求连续,而子数组或子字符串必须连续;对于子序列问题,第一种动态规划方法是,定义 dp 数组,其中 dp[…

PHP语言基础

🌱博客主页:大寄一场. 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 目录 前言 一、变量和数据类型 二、运算符和表达式 三、条件语句 四、循环语句 前言 PHP是一种非常流行的开源服务器端脚本语言,广泛用于Web开发…

Python sys模块

sys:使用或维护解释器 版本信息 Python版本 >>> sys.version 3.10.3 (tags/v3.10.3:a342a49, Mar 16 2022, 13:07:40) [MSC v.1929 64 bit (AMD64)]系统版本 >>> sys.platform win32 >>> 解释器版本 >>> sys.hexversion 50988016 >&g…

TypeScript 基本概念

TypeScript 是什么? 目标:能够说出什么是 TypeScript TS 官方文档 TS 中文参考 - 不再维护 TypeScript 简称:TS,是 JavaScript 的超集,JS 有的 TS 都有 TypeScript Type JavaScript(在 JS 基础之上…

Linux下文件的增删查改

1.什么是文件 文件是计算机文件属于文件的一种,与普通文件载体不同,计算机文件是以计算机硬盘为载体存储在计算机上的信息集合。文件文件内容文件属性。 2.文件的创建 文件的创建分为两种指令:touch和mkdir touch是用来创建普通文件的&am…

(C语言版)力扣(LeetCode)数组相关面试题OJ题解析

数组相关面试题 26. 删除有序数组中的重复项题目说明示例一示例二提示解析 27.移除元素题目说明示例1示例2提示解析解法一解法二 88. 合并两个有序数组题目示例一示例二示例三提示解析 结语 26. 删除有序数组中的重复项 题目 给你一个 升序排列 的数组 nums ,请你…

Verilog HDL——Modelsim仿真

常用testbench语法 $finish 和 $stop : $finish任务用于终止仿真并跳出仿真器;$stop任务则用于中止仿真。timescale [time_unit] / [time_precision] :time_unit指定计时和延时的测量单位,time_precision则是指定仿真器的精度。#…

7.3 有源滤波电路(1)

对信号的频率具有选择性的电路称为滤波电路,它的功能是使特定频率范围内的信号通过,而阻止其它频率信号通过。有源滤波电路是应用广泛的信号处理电路。 一、滤波电路的基础知识 1、滤波电路的种类 通常,按照滤波电路的工作频带为其命名&am…

C语言从入门到精通第17天(指针和数组联用)

指针和数组联用 不同类型指针变量之间的区别数组的指针指针数组 不同类型指针变量之间的区别 在了解数组和指针联用之前,我们先对指针变量进行补充。我们对比一下int *p1和char *p2的区别? 相同点: 都是指针变量都是用来保存一个内存地址编…

中级软件设计师备考---软件工程1

目录 经典的模型敏捷开发方法【的分类】信息系统开发方法【的分类】结构化设计---内聚与耦合结构化设计---系统结构/模块结构 需求的分类 经典的模型 瀑布模型:最早的一类、适用于需求明确的项目、结构化的典型代表 原型模型:先构造一个建议的系统原型再…

数据治理服务及数据治理应用解决方案

本资料来源公开网络,仅供个人学习,请勿商用,如有侵权请联系删除。 一、数据治理概述 (一) 数据治理概念 数据治理是指将数据作为组织资产围绕数据全生命周期而展开的相关管控活动、绩效和风险管理工作的集合,以保障数据及其应用…