Elasticsearch基础概念

Elasticsearch 是一款开源的,ESTful风格的 分布式搜索、存储、分析引擎;

在这里插入图片描述

常见的使用场景
  1. 网站搜索,代码搜索等
  2. 日志管理与分析,应用系统性能分析,安全指标监控等
  3. 数据库同步,将数据库某个表的数据同步到elasticsearch上然后提供搜索服务
ES基本概念

文档
我们向elasticsearch存储的一条数据,就是一个文档,类似于mysql 数据表中的一条数据.
每个文档都有一个id,可以自己指定,也可以让elasticsearch生成.

元数据

"_index" : "user",
"_id" : "l0D6UmwBn8Enzbv1XLz0",
"_score" : 1.6943597,
"_source" : {"user" : "mj","sex" : "男","age" : "18"
}
  • _index:文档所属的索引名称.
  • _id:文档的唯一标识.
  • _version:文档的版本信息.
  • _score:文档的相关性打分.
  • _source:文档的原始JSON内容.

索引

一个索引包含多个文档,类似于mysql中的table,可以对文档元数据进行定义.

索引体现的是一种逻辑空间的概念,每个索引都应该有自己的Mapping定义,用于定义包含文档的字段名和字段类型,索引的数据分布在分片上

集群
一个elasticsearch集群由多个节点构成,它的分布式架构支持存储水平扩容,并且依靠副本可用性也很高。

在这里插入图片描述

节点

一个节点就是一个elasticsearch实例,即一个java进程。节点根据功能可以划分多种角色,比如主节点、数据节点、协调节点、ingest节点等。默认一个节点这些角色都承担。

分片(shard)

  • 主分片:用于解决数据的水平扩展问题,通过主分片就数据分布在集群内的不同节点上,主分片在创建索引的时候就指定了,后面就不允许修改,除非重新定义Index.

  • 副本:用于解决高可用的问题,分片是主分片的拷贝.副本分片数可以动态的调整,增加副本数量可以在一定的程度上提高服务的可用性.

"settings" : {"index" : {// 设置主分片数"number_of_shards" : "1","auto_expand_replicas" : "0-1","provided_name" : "kibana_sample_data_logs","creation_date" : "1564753951554",// 设置副本分片数"number_of_replicas" : "1","uuid" : "VVMLRyw6TZeSfUvvLNYXEw","version" : {"created" : "7010099"}}
}

倒排索引
Elasticsearch 使用一种称为 倒排索引 的结构,它适用于快速的全文搜索。一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表。

借助官网的例子:假设我们有两个文档,每个文档的 content 域包含如下内容:

1. The quick brown fox jumped over the lazy dog
2. Quick brown foxes leap over lazy dogs in summer

为了创建倒排索引,我们首先将每个文档的 content 域拆分成单独的 词(我们称它为 词条 或 tokens ),创建一个包含所有不重复词条的排序列表,然后列出每个词条出现在哪个文档。结果如下所示:

Term      Doc_1  Doc_2
-------------------------
Quick   |       |  X
The     |   X   |
brown   |   X   |  X
dog     |   X   |
dogs    |       |  X
fox     |   X   |
foxes   |       |  X
in      |       |  X
jumped  |   X   |
lazy    |   X   |  X
leap    |       |  X
over    |   X   |  X
quick   |   X   |
summer  |       |  X
the     |   X   |
------------------------

分词器

分词是将文本转化为一系列单词的过程。转化为单词后就可以形成倒排索引 分词是由分词器实现的

  • Standard Analyzer:默认的分词器,按照词切分,并作大写转小写处理
  • Simple Analyzer:按照非字母切分(符号被过滤),并作大写转小写处理
  • Stop Anayzer:停用词(the、is)切分,并作大写转小写处理
  • Whitespace Anayzer:空格切分,不做大写转小写处理
  • IK:中文分词器,需要插件安装
  • ICU:国际化的分词器,需要插件安装
  • jieba:时下流行的一个中文分词器

Dynamic Mapping
Mapping可以简单的理解为数据库中的Schema定义,用于定义索引中的字段的名称,定义字段的类型,字段的倒排索引,指定字段使用何种分词器等.Dynamic Mapping意思就是在我们创建文档的时候,如果索引不存在,就会自动的创建索引,同时自动的创建Mapping,ElasticSearch会自动的帮我们推算出字段的类型,当然,也会存在推算不准确的时候,就需要我们手动的设置.常用的字段类型如下:

  • 简单类型:Text、Date、Integer、Boolean等
  • 复杂类型:对象类型和嵌套类型.

我们可以使用GET /shgx/_Mapping查询索引的Mapping的设置,需要注意的是以下几点:

  • 当我们对索引中的文档新增字段时候,希望可以更新索引的Mapping就可以可以设置Dynamic:true.
  • 对于已经有数据的字段,就不再允许修改其Mapping,因为Lucene生成的倒排索引后就不允许修改.

Dynamic Mapping可以设置三个值,分别是:

  • true:文档可被索引,新增字段也可被索引,Mapping也会被更新.
  • false:文档可被索引,新增字段不能被索引,Mapping不会被更新.
  • strict:新增字段写入,直接报错.
* index:可以设置改字段是否需要被索引到.设置为false就不会生成倒排索引,节省啦磁盘开销
* null_value:可以控制NULL是否可以被索引
* cope_to:将字段值放在一个新的字段中,可以使用新的字段search,但这个字段不会出现在_source中.
* anaylzer:指定字段的分词器
* search_anaylzer:指定索引使用的分词器
* index_options:控制倒排索引的生成结构,有四种情况
* docs:倒排索引只记录文档ID
* freqs:记录文档ID和Term
* positions:记录文档ID、Term和Term Position
* offsets:记录文档ID、Term、Term Position和offsets
* PS:Text类型的字段默认的是Position,其它类型默认的是docs,记录的越多,占用的存储空间就越大.

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

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

相关文章

【活动预告】Apache IoTDB TsFile 智慧能源应用“上会”啦!

2024 年,站在中国数字经济产业升级和数据要素市场化建设的时代交汇点上,为进一步推动全球数据库产业进步,由中国通信标准化协会、大数据技术标准推进委员会主办的“2024 可信数据库发展大会”将于 2024 年 7 月 16-17 日,在北京朝…

跟着李沐学AI:Softmax回归

回归 vs 分类 回归用于估计一个连续值 分类用于预测一个离散类别 两个经典的数据集: MNIST数据集: MNIST(Modified National Institute of Standards and Technology)数据集是一个广泛应用于机器学习和深度学习领域的手写数字…

车载视频监控管理方案:无人驾驶出租车安全出行的保障

近日,无人驾驶出租车“萝卜快跑”在武汉开放载人测试成为热门话题。随着科技的飞速发展,无人驾驶技术已逐渐从概念走向现实,特别是在出租车行业中,无人驾驶出租车的推出将为公众提供更为安全、便捷、高效的出行服务。 视频监控技…

【Linux杂货铺】2.进程优先级

1.进程优先级基本概念 进程优先级是操作系统中用于确定进程调度顺序的一个指标。每个进程都会被分配一个优先级,优先级较高的进程会在调度时优先被执行。进程优先级的设定通常根据进程的重要性、紧急程度、资源需求等因素来确定。操作系统会根据进程的优先级来决定进…

免费开源的工业物联网(IoT)解决方案

什么是 IoT? 物联网 (IoT) 是指由实体设备、车辆、电器和其他实体对象组成的网络,这些实体对象内嵌传感器、软件和网络连接,可以收集和共享数据。 IoT 设备(也称为“智能对象”)范围广泛,包括智能恒温器等…

PHP企业工商年报大师微信小程序系统源码

🌟轻松搞定年报难题!💼 🚀【一键直达,年报不再繁琐】 还在为每年的企业工商年报而头疼吗?繁琐的表格、复杂的流程,让人望而却步?现在有了“企业工商年报大师”微信小程序&#xff…

Docker:基础概念、架构与网络模式详解

1.Docker的基本概念 1.1.什么是docker Docker是一个用于开发,交付和运行应用程序的开放平台.docker使您能够将应用程序域基础框架分开,以便你可以快速开发交付软件.使用docker,你可以管理你的基础架构以管理应用程序相同的方式.通过利用docker用于交付,测试和部署代码的方法,你…

解决Ubuntu 22.04 vscode搜狗拼音输入无法输入中文

关闭vscode 编辑~/.bashrc,添加以下内容 export GTK_IM_MODULExim export QT_IM_MODULExim export XMODIFIERSimfcitx source ~/.bashrc && code 重新加载环境变量后启动code,即可以正常使用搜狗拼音输入法了

MongoDB - 查询操作符:比较查询、逻辑查询、元素查询、数组查询

文章目录 1. 构造数据2. MongoDB 比较查询操作符1. $eq 等于1.1 等于指定值1.2 嵌入式文档中的字段等于某个值1.3 数组元素等于某个值1.4 数组元素等于数组值 2. $ne 不等于3. $gt 大于3.1 匹配文档字段3.2 根据嵌入式文档字段执行更新 4. $gte 大于等于5. $lt 小于6. $lte 小于…

java内部类的本质

定义在类内部,可以实现对外部完全隐藏,可以有更好的封装性,代码实现上也往往更为简洁。 内部类可以方便地访问外部类的私有变量,可以声明为private从而实现对外完全隐藏。 在Java中,根据定义的位置和方式不同&#xf…

什么是IOT 可编程控制系统

IOT可编程控制系统GF-MAXCC是一种基于物联网(Internet of Things, IoT)技术的可编程中央控制主机。它集成了多种先进的技术和功能,能够在物联网系统中发挥关键作用,实现对多种设备的集中管理和控制。 一、定义与概述 定义&#x…

虚幻引擎ue5如何调节物体锚点

当发现锚点不在物体上时,如何调节瞄点在物体上。 步骤1:按住鼠标中键拖动锚点,在透视图中多次调节锚点位置。 步骤2:在物体上点击鼠标右键点击-》锚定--》“设置为枢轴偏移”即可。

219.贪心算法:柠檬水找零(力扣)

代码解决 class Solution { public:bool lemonadeChange(vector<int>& bills) {int num50, num100; // 初始化5美元和10美元的计数器for(int i0; i < bills.size(); i) // 遍历所有账单{if(bills[i]5) // 如果账单是5美元{num5; // 增加5美元的计数continue; // …

数据链路层协议 ------------- 以太网协议

链路层解决的问题 IP拥有将数据跨网络从一台主机送到另一台主机的能力&#xff0c;但IP并不能保证每次都能够将数据可靠的送到对端主机&#xff0c;因此IP需要上层TCP为其提供可靠性保证&#xff0c;比如数据丢包后TCP可以让IP重新发送数据&#xff0c;最终在TCP提供的可靠性机…

Linux系统密码重置

实验环境&#xff1a; Centos 7.9 背景&#xff1a; 找回root用户密码 1、首先&#xff0c;启动Linux系统进入开机界面&#xff0c;在界面中快速点击‘e’进入编辑界面&#xff0c;如图&#xff1a; 2、进入编辑界面会后往下翻找到“Linux16”内容所在的行数&#xff0c;在&q…

springboot商城综合项目自动化系统-计算机毕业设计源码051018

摘 要 目前电商系统商城项目管理极其频繁,迫切地需要自动化测试来代替人工繁琐而又重复的劳动。自动化测试相关的研究已经很多,但多数只是针对某一方面,比如单一接口或者单一页面或者性能等,而缺乏将接口、页面、持续集成系统和缺陷管理系统整合的自动化测试平台。本研究采用混…

Hadoop 2.0:主流开源云架构(二)

目录 二、Hadoop 2.0简述&#xff08;一&#xff09;Hadoop 2.0由来&#xff08;二&#xff09;Hadoop 2.0相关项目&#xff08;三&#xff09;Hadoop应用 三、Hadoop 2.0部署&#xff08;一&#xff09;部署综述&#xff08;二&#xff09;传统解压包部署 二、Hadoop 2.0简述 …

ARM功耗管理之睡眠锁

安全之安全(security)博客目录导读 思考&#xff1a;什么是睡眠锁&#xff1f;什么是唤醒源&#xff1f;什么是组合唤醒源&#xff1f; Kernel wakelocks的功能&#xff1a; 1&#xff09;允许driver创建wakelock以阻止睡眠、注销wakelock以允许睡眠。 2&#xff09;wake_lo…

计算机网络知识汇总

OSI七层模型 七层模型一般指开放系统互连参考模型&#xff0c;开放系统互连参考模型 &#xff08;Open System Interconnect 简称OSI&#xff09;&#xff0c;OSI参考模型是具有7个层次的框架&#xff0c;自底向上的7个层次分别是物理层、数据链路层、网络层、传输层、会话层、…

信息打点web篇--详解cdn识别与绕过

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文着重整理渗透过程中 cdn的相关知识点 cdn简要说明 我们一台服务器如果让外界访问&#xff0c;距离我们服务器近的地区访问的速度快&#xff0c;而远的地区访问速度则会大大减低。为了保证远区域用户的体验&a…