ElasticSearch学习

一,简介

ES(elaticsearch简写), Elasticsearch是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB级别的数据。
Elasticsearch是使用Java编写并基于Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单。

二,ES搜索引擎原理

索引和分片

在ES中,所有的数据都被存储在称为索引的数据结构中,一个索引可以包含多个文档。而的文档的类型需要在创建索引时指定。ES还对每个索引进行了分片,每个分片都被存储在集群中的不同节点上,这样可以提高数据的可用性和查询效率。

索引和文档关系

参考:https://blog.csdn.net/liuwenqiang1314/article/details/125668175

ES数据结构和MySQL对应

ES数据结构中的索引和表的概念类似于MySQL,但ES的索引是面向文档的,而MySQL的表是面向行的。此外,ES的数据存储和检索采用了倒排索引,而MySQL则是使用了B+树。

ES中有几个基本概念:索引(index)、类型(type)、文档(document)、映射(mapping)等。我们将这几个概念与传统的关系型数据库中的库、表、行、列等概念进行对比,如下表:
在这里插入图片描述

映射

在ES中,每个索引都有一个映射,用来定义文档中每个字段的类型,以及如何存储和索引数据。映射定义了索引中可以存储哪些数据类型,以及每个类型的存储方式和搜索方式。

搜索

在ES中,搜索请求被发送到集群中的一个节点(称为协调节点或负载均衡节点)。这个节点将请求发送到包含索引分片的节点。每个节点都会返回匹配搜索条件的文档,并将结果返回给协调节点,协调节点将所有结果汇总后返回给客户端。

倒排索引

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

在搜索引擎中,每个文档都有一个对应的文档ID,文档内容被表示为一系列关键字的集合。例如,文档1经过分词,提取了20个关键字,每个关键字都会记录它在文档中出现的次数和出现位置。

然后,倒排索引就是关键字到文档 ID的映射,每个关键字都对应着一段的文件,这些文件中都出现了关键字。

倒排索引的两个重要细节:

  • 倒排索引中的所有词项对应一个或多个文档;
  • 倒排索引中的词项根据字典顺序升序排列

一篇很好的讲倒排索引的文章:ES之倒排索引详解

三,Java中ElasticSearch的查询

参考文章:Java中ElasticSearch的各种查询(普通,模糊,前缀,高亮,聚合,范围)

全文参考文章:
ES基本概念和原理简单介绍
ES搜索引擎
ES搜索引擎原理

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

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

相关文章

9-数据结构-栈(C语言版)

数据结构-栈(C语言版) 目录 数据结构-栈(C语言版) 1.栈的基础知识 1.入栈,出栈的排列组合 情景二:Catalan函数(计算不同出栈的总数) 2.栈的基本操作 1.顺序存储 (1)顺序栈-定义…

c语言操作符

目录 运算符 移位操作符 左移操作符 右移操作符 位操作符 按位与& 按位或| 按位异或^ 异或交换数字 计算二进制中1的个数 关系操作符 逻辑操作符 条件操作符 逗号表达式 下标引用、函数调用和结构成员 隐式类型转换 整形提升实例: 算术转换 操作…

Java并发编程(四)线程同步 中 [AQS/Lock]

概述 Java中可以通过加锁,来保证多个线程访问某一个公共资源时,资源的访问安全性。Java提出了两种方式来加锁 第一种是我们上文提到的通过关键字synchronized加锁,synchronized底层托管给JVM执行的,并且在java 1.6 以后做了很多…

Flink窗口分类简介及示例代码

水善利万物而不争,处众人之所恶,故几于道💦 文章目录 1. 流式计算2. 窗口3. 窗口的分类◆ 基于时间的窗口(时间驱动)1) 滚动窗口(Tumbling Windows)2) 滑动窗口(Sliding Windows&…

ArcGIS Maps SDK for JavaScript系列之三:在Vue3中使用ArcGIS API加载三维地球

目录 SceneView类的常用属性SceneView类的常用方法vue3中使用SceneView类创建三维地球项目准备引入ArcGIS API创建Vue组件在OnMounted中调用初始化函数initArcGisMap创建Camera对象Camera的常用属性Camera的常用方法 要在Vue 3中使用ArcGIS API for JavaScript加载和展示三维地…

太牛了!国内版ChatDoc企业知识库,直接操作Doc、Docx、PDF、txt等文件

自ChatGPT问世以来,国外就有ChatPDF、ChatDOC等基于文档问答的项目,但是国内还一直处于对话类产品的研发中。 贵州猿创科技研发了基于本地向量模型的ChatDoc知识库系统,可以直接上传Doc、Docx、PDF、txt、网页链接等进行问答。 体验地址&…

【资讯速递】AI与人类思维的融合;OpenAI在中国申请注册“GPT-5”商标;移动大模型主要面向to B 智能算力是未来方向

2023年8月11日 星期五 癸卯年六月廿五 第000001号 欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 本文收录于IT资讯速递专栏,本专栏主要用于发布各种IT资讯,为大家可以省时省力的就能阅读和了解到行业的一些新资讯 资…

redis的基础命令01

1、操作库的指令 1、清除当前库---flushdb 2、清除所有库---flushAll 2、操作key的指令 最常用的指令get、set 1)set key value 2)get key 基础指令 1、del 删除单个:del key 、批量删除:del key1 key2 key3 2、exists 判断key是否…

1.作用域

1.1局部作用域 局部作用域分为函数作用域和块作用域。 1.函数作用域: 在函数内部声明的变量只能在函数内部被访问,外部无法直接访问。 总结: (1)函数内部声明的变量,在函数外部无法被访问 (2)函数的参数也是函数内部的局部变量 (3)不同函数…

Eclipse-配置彩色输出打印

文章目录 前言配置下载查看是否安装 前言 这是一篇古老的文章,那个时候还在用Eclipse ,现在已经换 IDEA 了… 这是一篇 2018 年的文章,我只是将文章从个人比较挪到了CSDN 中 配置 配置完然后下载下面插件即可生成彩色代码。 下载 ANSI …

章节5:Burp 扫描功能

章节5:Burp 扫描功能 参考资料 https://portswigger.net/burp/documentation/scanner https://portswigger.net/burp/documentation/desktop/scanning 模块总体介绍: https://portswigger.net/burp/vulnerability-scanner 扫描功能的使用&#xff…

MEC | 条款3 绝对不要以多态(polymorphically)方式处理数组

条款3 绝对不要以多态(polymorphically)方式处理数组 文章目录 条款3 绝对不要以多态(polymorphically)方式处理数组继承Example 打印基类-派生类数组传入BalencedBST 数组到函数 删除基类-派生类数组>>>>> 欢迎关…