Elasticsearch 第一期:基础的基础概念

前言

Elasticsearch(弹性搜索) ,简称为ES, 它是一个开源的高扩展的分布式全文检索引擎,它提供的功能主要分为:实时存储,实时分析搜索;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。

ES核心也是基于 Lucene 来实现所有索引和搜索的功能,其开发者开发ES的初衷是希望通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。

据国际权威的数据库产品评测机构 DB Engines 的统计,在2016年1月,ElasticSearch已超过Solr等,成为排名第一的搜索引擎类应用。

常见概念介绍

Elasticsearch 是 面向文档 的,意味着它存储整个对象或 文档。Elasticsearch 不仅存储文档,而且 索引 每个文档的内容,使之可以被检索。

上面提到了两个关键字--文档,索引。可以说这个两个词是ES的基石。

文档

在以Java为代表的面向对象语言中,对象是操作的基本单位。对于ES而言,文档的概念可以类比对象。不过,有一个区别: 对象仅仅是类似于  hashmap 、字典或者JSON 对象,对象中也可以嵌套其他的对象。在 ES中,术语 文档 有着特定的含义。它是指根对象(最顶层), 这个根对象被序列化成 JSON 并存储到 ES 中,指定了唯一 ID。

上面又提到一个新词——根对象,要理解根对象,那么就需要分析ES文档的内容和组成了。下面展示了一个基础的格式化后的ES文档数据。以key的格式可以划分了两类,带"_"的字段(即文档元数据,如_id,_index等)和普通字段(即真实的内容,如workerName)。

对于一个文档而言,重要的文档源数据三个,_index_type_id。通过这三个元数据即可定位到一个明确的文档。其中_index,也就是前面提到 索引。 索引 可以说是具有共同特性的文档集合。

在一个索引中也可以有多个类别的文档,对于文档类别则使用_type来声明,相当于在索引中对数据进行逻辑分区。在 7.0 之前,每一个索引是可以设置多个 Types 的,每个 Type 会拥有相同结构的文档,但是在 6.0 开始,Type 已经被废除,在 7.0 开始,一个索引只能创建一个 Type,也就是 _doc

当然对于每个文档都有一个唯一标识:_id。id是一个字段串,若不指定,默认是一个Base64 编码的 UUID。

{"_id": "198278367","_index": "hcm_worker","_type": "_doc","_score": 1,  "_source": {"workerName": "小明","workerNo": "U12093","workerTag": [{"key": "年龄","value": [ "30~40"]}]}
}

索引

接下来介绍ES中另一个重要的概念---索引。对于MySQL数据库,索引可以说是最基础的一个概念,ES中的索引与MySQL中的索引概念有所不同。在ES中索引有名词和动词两种含义。

对于名词含义,如前所述,索引是具有共同特性的文档集合。类似于传统关系数据库中的一个 数据表 ,是一个存储关系型数据的地方。

对于动词含义,索引一个文档 就是存储一个文档到一个 索引 (名词)中以便被检索和查询。这非常类似于 SQL 语句中的  INSERT 关键词,除了文档已存在时,新文档会替换旧文档情况之外。

和MySQL使用B+树索引 到指定的列上,来提升数据检索速度。ES也有MySQL索引的类似功能,即倒序索引,用于快速的全文搜索。

关于倒排索引的介绍,下面的博客介绍的很详细,可参考。

ES之倒排索引详解_es倒排索引-CSDN博客

总结

这里只是简单介绍了ES最基础的两个概念:文档和索引。后续的搜索,排序,分布式等等都是基于这两个概念发展的。也会继续学习进行整理。

https://www.cnblogs.com/crazymagic/articles/14512958.html

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

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

相关文章

Java并发编程:利用CompletableFuture优化异步任务

在现代Java应用开发中,能够有效地处理异步任务是提升性能和用户体验的关键。Java 8引入的CompletableFuture提供了强大的工具,使得管理复杂的异步逻辑变得更简单。本文将探讨CompletableFuture的功能、用法及其在实际项目中的应用。 ### CompletableFut…

LeetCode 1731, 151, 148

目录 1731. 每位经理的下属员工数量题目链接表要求知识点思路代码 151. 反转字符串中的单词题目链接标签思路代码 148. 排序链表题目链接标签Collections.sort()思路代码 归并排序思路代码 1731. 每位经理的下属员工数量 题目链接 1731. 每位经理的下属员工数量 表 表Emplo…

【星座运势】本周财运分析,巨蟹座财富潜力大开!

大家好!今天我们来谈谈巨蟹座本周的财富运势。经过调查和数据分析,我发现巨蟹座这周的财运潜力很大!接下来,我将用通俗易懂的语言,通过代码说明,向大家展示巨蟹座的财富运势。 首先,我们需要通…

Java面试题:Redis哨兵模式

哨兵集群(sentinel) 实现主从集群的自动故障恢复 主从节点之间实现数据同步 哨兵的作用 监控 哨兵会不断检查主节点和从节点是否按照预期工作 自动故障恢复 如果主节点故障,哨兵会将从节点提升为主节点 当故障实例回复后以新的主节点为主 通知 哨兵充当Redis客户端的…

人工智能对零售业的影响

机器人、人工智能相关领域 news/events (专栏目录) 本文目录 一、人工智能如何改变零售格局二、利用人工智能实现购物体验自动化三、利用人工智能改善库存管理四、通过人工智能解决方案增强客户服务五、利用人工智能分析消费者行为六、利用 AI 打造个性化…

【javaEE-有关CPU进程和线程实现的并发编程及二者的区别】

🔥🔥🔥有关进程并发编程开发的成本问题 这次之前其实我们所有的写的程序都是使用单核心来运行的,但是一般我们的计算机都有很多核心,如果我们编程的时候,只使用一个核心的话,其实这是一个非常大…

【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题

文章目录 【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题完整案例 【Java】Java 使用 Graphics2D 在图片上添加文字,并解决图片变红问题 完整案例 public static void main(String[] args) {try {String filePath "D:\\Works…

使用源代码编译方式升级内核【笔记】

为什么要升级内核 升级内核有多个重要的原因,主要包括以下几点: 安全性:随着技术的发展,旧版本的内核可能会存在安全漏洞。黑客或恶意用户可能会利用这些漏洞进行攻击。升级内核可以修复这些已知的安全漏洞,从而提高系统的安全性。性能优化:新版本的内核通常会包含对性能…

打造成功的人力RPO项目:赢得市场赚取利润

人力资源外包(RPO)项目是当今企业在招聘和人才管理方面越来越倾向的选择。想要通过人力RPO项目赚钱,以下是一些关键的策略和步骤,帮助您进入这个市场并取得成功。 1. 建立专业的人力RPO服务 首先,要想在人力RPO项目中赚钱,必须建立…

9. 文本三剑客之awk

文章目录 9.1 什么是awk9.2 awk命令格式9.3 awk执行流程9.4 行与列9.4.1 取行9.4.2 取列 9.1 什么是awk 虽然sed编辑器是非常方便自动修改文本文件的工具,但其也有自身的限制。通常你需要一个用来处理文件中的数据的更高级工具,它能提供一个类编程环境来…

【CT】LeetCode手撕—20. 有效的括号

题目 原题连接&#xff1a;20. 有效的括号 1- 思路 模式识别 模式1&#xff1a;括号左右匹配 ——> 借助栈来实现 ——> Deque<Character> deque new LinkedList<>()模式2&#xff1a;顺序匹配 ——> 用 if 判断 具体思路 1.遇到左括号 直接入栈相应…

把本机的bash构建到docker镜像里面

最近突发奇想&#xff0c;想把本机的bash放到docker镜像里面&#xff0c;接下来看操作。 获取bash以及依赖 [rootbogon ~]# cat get_lib_info.sh #!/bin/bash# 函数&#xff1a;显示帮助信息 show_help() {echo "Usage: $(basename "$0") -h -f <file>…

FPGA IO_BANK、IO_STANDARD

描述 Xilinx 7系列FPGA和UltraScale体系结构提供了高性能&#xff08;HP&#xff09;和 高范围&#xff08;HR&#xff09;I/O组。I/O库是I/O块&#xff08;IOB&#xff09;的集合&#xff0c;具有可配置的 SelectIO驱动程序和接收器&#xff0c;支持多种标准接口 单端和差分。…

C# OpenCvSharp 代数运算-add、scaleAdd、addWeighted、subtract、absdiff、multiply、divide

在C#中使用OpenCvSharp进行图像处理时,理解和合理使用各种图像操作函数可以帮助我们实现许多实际应用中的需求。下面,我将详细介绍每个函数的使用,并给出与实际应用项目相关的示例,包括运算过程和运算结果。 1. add 函数 作用 将两幅图像进行相加,可以达到图像融合的目的…

JS中的延时操作setTimeout()和setInterval()

JS中&#xff0c;给我们提供两种延时操作的内置方法setTimeout()和setInterval()。setTimeout和setInterval方法都是挂载在javascript的window对象下&#xff0c;通过两个参数控制&#xff0c;第一个参数控制运行的表达式或方法&#xff0c;第二个参数表示延时的时间&#xff0…

【电路笔记】-共基极放大器

共基极放大器 文章目录 共基极放大器1、概述2、等效电路3、电流增益4、输入阻抗5、输出阻抗6、电压增益7、示例:电压、电流和功率增益8、总结1、概述 在本文中,我们将介绍双极晶体管放大器的最后一种拓扑,称为共基极放大器 (CBA)。 下面的图 1 显示了 CBA 的电气图,此处没…

vite-plugin-pwa 离线安装Vite应用

渐进式Web应用&#xff08;PWA&#xff09;通过结合 Web 和移动应用的特点&#xff0c;为用户带来更加流畅和快速的体验。且PWA支持离线访问能力&#xff08;访问静态资源本地缓存&#xff09;&#xff0c;极大提高了用户交互的流畅性&#xff0c;降低非必要的网络依赖。尤其适…

java中Array(数组)、List(列表)、Set(集合)、Map(映射)、Queue(队列)详解

1. 数组&#xff08;Array&#xff09; 概念 数组是存储固定大小相同类型元素的集合。数组在Java中是静态的&#xff0c;长度一旦确定就不能改变。 特点 固定大小&#xff1a;数组长度固定&#xff0c;不能动态改变。索引访问&#xff1a;通过索引&#xff08;从0开始&…

卡尔曼滤波源码注释和调用示例

卡尔曼滤波源码注释和调用示例 flyfish Python版本代码地址 C版代码地址 主要用于分析代码&#xff0c;增加了中文注释 import numpy as np import scipy.linalg""" 0.95分位数的卡方分布表&#xff0c;N自由度&#xff08;包含N1到9的值&#xff09;。 取自…

【JS重点15】原型对象概述

目录 一&#xff1a;构造函数缺陷 二&#xff1a;原型 1 原型是是什么 2 原型对象的作用 3 原型对象this指向问题 4 利用原型对象添加方法 给JS内置构造函数Array添加最大值方法 给JS内置构造函数Array添加求和方法 三&#xff1a;Constructor属性 四&#xff1a;如何…