ElasticSearch(二)简介

news/2024/7/7 5:49:25 标签: elasticsearch, 搜索引擎, 全文检索, java, 学习

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.niftyadmin.cn/n/285357.html

相关文章

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

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

这些你熟知的 app 和服务,都用上了人工智能

从微软在 Microsoft 365 服务中全面整合 GPT-4 能力 ,让 PPT、Word 文档、Excel 表格的制作变成了「一句话的事」,到 Adobe 刚刚发布 Adobe Firefly模型集合,让图形设计、字体风格、视频渲染乃至 3D 建模的门槛显著降低——你我熟知的那些工…

Java中的互斥锁介绍

前言 互斥锁是一种广泛应用于多线程编程中的并发控制机制。在Java中,互斥锁有很多不同的实现方式,在本文中我们将介绍Java中常见的几种互斥锁实现方式,并讲解它们的用法、原理和代码案例。 synchronized关键字 在Java中,采用sync…

在Linux上搭建gitlab以及自动化编译部署的完整流程

一、安装gitlab 首先下载gitlab的安装包,地址如下: https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/bionic/main/g/gitlab-ce/ 然后安装下载的包即可,一般还需要安装openssh-server等依赖包,在安装gitlab包之前可以…

Git 使用教程整理

一、配置Git 编码为utf-8 设置登陆账号 使用Git GUI操作 二、获取远程仓库代码 推荐使用使用 git bash 命令:git clone xxx git clone https://github.com/jeromeetienne/jquery-qrcode.git 其他参考:使用Git获取最新版本到本地_gitgui 获取新版本_天…

es6的语法糖,展开运算符,类的实现

1.0 ES6语法糖 [重点] 1.1数组的解构赋值 // 声明多个变量 let [a,b,c] [1,2,3] ​ let a1,b2; // 交换数值 [a,b] [b,a] ​2 1.12 函数的参数结构 1.2对象的解构 对象存在键值对,如果需要解构对象,你需要使用对象的键名为变量…

JS案例分析-某国际音x-tt-params参数分析

今天我们要分析的网站是:https://www.tiktok.com/selenagomez?langen,参数名字叫x-tt-params。 先来抓个包 这个接口是用户视频列表url,参数叫x-tt-params,该接口中还有其他参数像msToken,X-Bogus, _sig…

【王道·计算机网络】第三章 数据链路层【未完】

一、功能 研究思想:水平方向个数据链路层的差距 1.1 数据链路层基本概念 结点:主机、路由器链路:网络中两个节点之间的物理通道,传输介质包含:双绞线、光纤、微波。分为:有线链路、无线链路数据链路&…