elasticSearch(一):elasticSearch介绍

一、搜索引擎

搜索引擎的核心目的是帮助用户以最小的成本才海量数据中找到最想要的结果。糟糕的搜索引擎往往会所问非所答,用户查了半天也得不到自己想要的,好的搜索引擎往往第一页就是用户最想要的结果。而目前判断搜索引擎好坏一般是从召回率、精确率两个指标来衡量搜索质量:

image.png

 

css

代码解读

复制代码

召回率 = B / (A + B) 精确率 = B / (B + D)

一、elasticSearch诞生

lucence在1999年首次发布,并于2005年成为apache基金会项目。它提供了强大的索引和搜索功能,通过简单的api就可以对外提供功能。

在2004年,Shay Banno帮助妻子学习,为其开发了一个方便搜索菜谱的应用,此时他就接触lecence,并对lecence进行了封装,此时elaseticSearch的前身Compass便诞生了。后面在2010年Compass更名为elasticSearch并对外发布;

由于ElasticSearch的火爆,Shay Banno与Uri Boness、Simon Willnauer共同组建了ElasticSarch公司,后续整合了Kibana、Beats、Logstash于2015年更名为Elastic。

二、介绍

ElasticSearch是分布式搜索和分析引擎,它基于java编程语言构建,可以在主流硬件平台上运行。在存储和计算、分析方面,elasticSearch允许执行和合并多种类型的搜索,适用于各种新用例,具有极高的可用性和容错性。

它拥有以下特点:

  1. 使用简单的ReSTful Api,天然兼容多语言开发;
  2. 使用水平横向拓展节点,通过增加节点来实现负载均衡以及增强集群可靠性;
  3. 面向文档,不使用“表”来存储数据,而使用“文档”来存储数据;
  4. 无模式,无须定义好字段类型、长度等,可以直接导入文档;
  5. 近实时存储,使每个字段都被索引且可用于搜索;
  6. 响应快,海量数据下能实现秒级响应速度;
  7. 易拓展,支持处理PB级数据;
  8. 多租户,支持多个业务共用,并且确保业务数据间的隔离性。

三、elasticSearch核心概念

集群

elasticSearch集群是一组elasticSearch节点的集合;节点根据用途不同分为不同的角色,每个节点之间可以相互通信。通常都采用集群形式部署elasticSearch,目的是实现容错和高可用。elasticSearch集群需要一个唯一标识的集群名称来防止不必要的节点加入。根据实际业务场景一个集群的节点数据从一个到数千个不等。

节点

节点指的是一个elasticSearch实例,也可以说是一个elasticSearch进程。节点可以部署到物理机或者虚拟机上。每当elasticSearch启动时,节点就会开始运行。每个节点都有唯一标识的名称,在部署多节点集群环境的时候要注意节点名称不要写错。

索引

索引时elasticSearch用于存储和管理相关数据的逻辑容器。索引可以看到数据库中的一个表。数据以JSON格式的文档存储在索引中。每个索引具有唯一的名称,并且名称必须为小谢。

分片

分片是包含索引数据的一个子集,它本身就具备完整的功能和独立性,可以将分片看成索引。当一个索引有多个分片时,elasticSearch会将请求分发到各个分片处理请求,并将他们的结果集进行处理。而对于使用elasticSearch并不需要关心它底层的分片结构,elasticSearch会自动帮忙处理好。

副本

为了防止硬件上的故障,保证集群的容错性和高可用性,elasticSearch提供了复制数据的特性。分片可以被复制,被复制的分片称为“主分片”,复制的称为“副本分片”;当主分片数据节点不可用时,集群会将副本分片升为主分片。

文档

关系型数据库,以行作为存储单元,而elasticSearch以文档作为存储单元;文档中的数据由键值对构建,键为字段的名称,值为具体的值;值包含字符串类型、数字类型等,后续详细介绍。

字段

字段是elasticSearch中的最小单位,可以把它理解成关系型数据库中的字段;差别是关系型数据库字段类型是唯一的,而elasticSearch中字段可以设定为多种。

倒排索引

在elasticSearch每个文档都可以当作一些词的集合,倒排索引就是将这些词映射到该文档上,它与关系型数据库的索引刚好相反,因此倒排索引成为elasticSearch以及其他支持全文索引数据库的关键。

映射

在elasticSearch中映射类似于关系型数据库中的Schema,但在elasticSearch中映射更为复杂,不同业务场景下映射的创建对业务使用影响会很大,后续详细介绍。

分词

构建倒排索引的关键,使elasticSearch能让用户在O(1)时间复杂度快速找回数据结果。在elasticSearch中有很多种分词器,例如常用的IK分词器,后续详细介绍。

作者:想打游戏的程序猿
链接:https://juejin.cn/post/7389428858390478859
来源:稀土掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

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

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

相关文章

深度相机获取实时图像总结

问题详情:之前一直把曝光调整到50000,画面一直很流畅,知道领导要求将曝光改成500000时整个程序卡死了 问题解决: 首先怀疑是帧率太低的原因,控制变量后发现不是帧率的问题,看着代码很迷茫,领导…

开发中使用UML的流程_08 PIM-4:定义操作及方法

目录 1、序列图概述 2、序列图调用方式 3、创建消息与销毁消息 4、几项建议 1、序列图概述 在PIM-4中,系统分析员可以用序列图来表达,系统内部一群对象合力完成某一个系统用例时,执行期间的交互情形。之后,序列图可能通过设计…

关于线扫相机的使用和注意事项

引言 线扫相机作为工业视觉系统中的核心设备之一,以其高分辨率和高速成像的特点被广泛应用于印刷质量检测、电子元件检测、纺织品缺陷检测等领域。本文从线扫相机的基本原理出发,探讨其使用方法,并总结在实际应用中的注意事项,为…

UE5 像素流进行内网https证书创建

确定证书需求 内网 HTTPS 通信通常需要以下内容: 自签名证书(适用于内网环境,不需要通过公开的证书颁发机构 CA) 或者通过内部的企业 CA 签发的证书(更安全)。 生成自签名证书 使用工具(如 Ope…

QNX的IPC通信

资料参考: QNX官网文档 QNX内核名义上提供了四种服务:进程调度、IPC通信、底层网络通信、中断处理,而提供给进程的IPC通信种类有三种:Message、Pulse和Signal Message QNX最基本也是最核心的IPC方式,通常用于C/S架构的软件模式,是一对多的关系 添加图片注释,不超过 …

Python酷库之旅-第三方库Pandas(259)

目录 一、用法精讲 1226、pandas.tseries.offsets.Week.name属性 1226-1、语法 1226-2、参数 1226-3、功能 1226-4、返回值 1226-5、说明 1226-6、用法 1226-6-1、数据准备 1226-6-2、代码示例 1226-6-3、结果输出 1227、pandas.tseries.offsets.Week.rule_code属性…

springboot/ssm国风彩妆网站Java代码web项目化妆品购物商城系统

springboot/ssm国风彩妆网站Java代码web项目化妆品购物商城系统 基于springboot(可改ssm)vue项目 开发语言:Java 框架:springboot/可改ssm vue JDK版本:JDK1.8(或11) 服务器:tomcat 数据库&#xff1a…

Java语言使用Proxy类进行更灵活的代理ip设置(Java1.5 及以上)

使用Proxy类来设置代理可以更加灵活,。以下是一个示例: import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.net.InetSocketAddress;import java.net.Proxy;import java.net.URL;import java.net.…

Kubernetes架构原则和对象设计

云原生学习路线导航页(持续更新中) 快捷链接 Kubernetes常见问题解答 本文从 Google Borg系统的架构设计开始,深入讲解Kubernetes架构及组件的基本原理 1.什么是云计算 1.1.传统行业应用 假设有10台服务器,两个应用。小规模管…

组件中的回调方法

文章目录 1. 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Flutter中如何使用三方包相关的内容,本章回中将介绍Widget的生命周期.闲话休提,让我们一起Talk Flutter吧。 1. 概念介绍 本章回中介绍的生命周期是指Widget从创建到结果的整个过程,这里提到的Widget是一个…

【LINUX】Linux 下打包与部署 Java 程序的全流程指南

文章目录 一、Java 程序打包1. 使用 Maven 打包2. 使用 Gradle 打包 二、运行 JAR 文件1. 前台运行2. 后台运行方法 1:使用 & 符号方法 2:使用 nohup 三、关闭运行中的程序1. 查找程序 PID2. 关闭程序 四、使用 Shell 脚本管理程序1. 创建 Shell 脚本…

【人工智能数学基础篇】线性代数基础学习:深入解读矩阵及其运算

矩阵及其运算:人工智能入门数学基础的深入解读 引言 线性代数是人工智能(AI)和机器学习的数学基础,而矩阵作为其核心概念之一,承担着数据表示、变换和运算的重任。矩阵不仅在数据科学中广泛应用,更是神经网…

工程企业劳务管理软件有哪些内容?

工程劳务管理软件是专门用于管理和优化工程项目中劳务队伍的工具,其核心内容通常围绕劳务人员的招募、考勤、工资结算、安全培训、工时管理以及合规性管理展开。以下是工程劳务管理软件常见的内容模块: 1. 人员信息管理 内容: 劳务人员的基…

管理服务器遇到的一些问题(开机进入Grub、版本升级、扩容等)

2024 年 12 月 3 日,服务器由于误操作被删了一些数据,重新整理服务器的时候遇到了一些问题,记录下来。 工作内容 卸载系统 需求 在双 Linux 系统下卸载其中一个。将其分配的磁盘删除并格式化。 解决方法 安装 gparted 进行可视化操作。…

w~深度学习~合集1

我自己的原文哦~ https://blog.51cto.com/whaosoft/12663254 #Motion Plan 代码 github.com/liangwq/robot_motion_planing 轨迹约束中的软硬约束 前面的几篇文章已经介绍了,轨迹约束的本质就是在做带约束的轨迹拟合。输入就是waypoint点list,约束…

docker容器简单使用

docker-compose 链接: https://pan.baidu.com/s/17uy4v3QPoxN2YzSb-WuDkw?pwdgzyv 提取码: gzyv --来自百度网盘超级会员v1的分享 chmod -x /usr/local/bin/compose-docker //给文件执行权限 docker -up d //启动目录下的容器 docker ps…

MR30分布式IO模块赋能喷水织机

纺织行业作为我国传统支柱产业,历经数千年的演变,如今仍面临着诸多困境,在纺织行业中,每一次技术的飞跃都是对行业边界的勇敢探索。在纺织行业,喷水织机作为关键生产设备,其性能直接影响到产品质量和产能。…

【单片机】ESP32-S3+多TMC2209控制步进电机系列1 UART通信及无传感回零 硬件部分

目录 1. 硬件选型1.1 esp32硬件型号1.2 TMC2209 硬件型号 2 原理接线图2.1 esp32接线2.2 TMC2209接线2.2.1 单向通讯 不配置地址2.2.2 单向通讯 配置地址2.2.3 双向通讯 单UART 【本文采用】2.2.4 双向通讯 多UART 3. 成品效果 1. 硬件选型 1.1 esp32硬件型号 采用的是微雪ES…

组件中的生命周期

文章目录 1 概念介绍2 使用方法3 示例代码我们在上一章回中介绍了Flutter中如何使用三方包相关的内容,本章回中将介绍Widget的生命周期.闲话休提,让我们一起Talk Flutter吧。 1 概念介绍 本章回中介绍的生命周期是指Widget从创建到结果的整个过程,这里提到的Widget是一个泛…

MongoDB的简单使用

MongoDB(文档数据库)的简单使用 MongoDB最好的学习资料就是他的官方文档:SQL 到 MongoDB 的映射图表 - MongoDB 手册 v8.0 1.SQL到MongoDB的映射表 下表列出各种SQL术语和概念以及相应的MongoDB术语和概念 传统关系型数据库中SQL术语/概念NoSQL型MongoDB数据库术…