ElasticSearch核心基础之入门篇
一 什么是全文检索
指的是计算机搜索程序扫面整篇文档,对每一个单词建立索引,并记录该词出现的位置次数。这样当用户查询的时候,搜索程序就根据事先监理的索引进行查找,并将查找结果返回用户。
正排索引和倒排索引
我们知道,搜索程序可以扫描文档,对每一个单词进行 索引,这样被拆分的单词就是关键词,所以就会形成一个关键词的集合,每一个关键词都会记录它在文档中出现的位置和次数。
正排索引:forward index,就是根据文档找关键词
倒排索引:invert index,根据关键词找文档
如上图所示:Lucene将上面3列作为词典文件(Term Dictionary),频率文件(frequencies),位置文件(positions)。其中词典文件不仅保存了每一个关键词,还保留了指向频率文件和位置文件的指针,通过该指针读取关键字的频率信息和位置信息
从正排索引和倒排索引的特性来看,不难看出:
倒排索引:更加适合搜索,效率很快
正派索引:更加适合排序,聚合等
二 什么是ElasticSearch
是一个基于Lucene的构建的开源的,分布式的,RESTful接口全文搜索引擎,还可以把她理解为分布式的文档数据库。
2.1ElasticSearch相关的产品
Beats: 他是一个代理,将不同类型的数据发送到ElasticSearch中。它由三部分组成:Filebeat,Topbeat,Packetbeat。 其中Filebeat用于收集日志,Topbeat用来收集系统基础设置数据,如CPU,内存,每一个进程的统计信息,Packetbeat是一个网络包分析工具。
Shield: 加密通信,认证保护整个ElasticSearch数据,它是基于角色的访问控制和统计,是收费的
Watcher:它是ElasticSearch的警报和通知工具。他可以主动监测ElasticSearch的状态,并在有异常的时候进行提醒,还可以根据你的数据变化情况来才去不同的处理方式,也是收费的。
Marvel: 它是ElasticSearch的管理和监控工具。他监控ElasticSearch集群索引节点活动,快速诊断问题,也是收费的。
2.2 基础知识
2.2.1term 索引词
是一个能够被索引的精确值,foo,Foo,FOO几个单词是不同的索引词。索引词(term)是可以通过term查询进行准确的搜索。
2.2.2text 文本
文本是一段普通的非结构化的文字,通常文本会拆成一个个的索引词,存储在ElasticSearch的索引库中。为了让文本能够进行搜索,文本字段需要实现进行分析,当对文本中的关键词查询的时候,搜索引擎应该根据搜索条件搜出原来的文本
2.2.3 analysis分析
分析是将文本转化为索引词的过程,分析结果依赖于分词器,比如FOO BAR、Foo-Bar和 foo bar这几个单词有可能会被拆分成相同的索引词foo和bar,这些索引词存储在ElasticSearch的索引库中。
2.2.4 routing路由
当存储一个文档的时候,他会存储在一个唯一的主分片中,具体哪个分片是通过散列值进行选择。默认情况下,这个值由文档的ID生成。
2.2.5shard 分片
一个分片就是一个lucene实例,是一个最小的工作单元,存储部分数据。索引会被切分成多个分片:分片有2中类型
Primary Shard(主分片) 和 Replica Shard(备份分片):
主要目的就是为了容灾和容错,防止节点故障导致shard数据丢失当;并且副本分片还可以分担读请求。
增加节点的时候,分片会自动在节点中负载均衡
一个文档只可能存在一个主分片中,以及主分片对应的备份分片,不可能存在多个分片中
Primary Shard的数量在创建索引的时候就固定了,默认是5个;副本分片数量可以随时修改。所以默认有10个shard, 5个主分片以及他们分别对应的副本分片
主分片和部分分片不能同时存放于同一个节点上,否则节点宕机,主备分片都丢失,起不到容灾容错的作用。
2.2.6 索引
是具有相同结构的文档集合,例如一个客户信息的索引,包括一个产品目录的索引,一个订单数据的索引。在系统上索引的名字全部小写,通过这个名字可以用来执行索引,搜搜更新和删除操作。
2.2.7 类型 type
在索引中,可以定义一个或多个类型,类型是索引的逻辑分区。比如一个博客平台,把所有的数据存在索引中,这个索引你可以定义一种类型为用户数据,一种类型为博客数据,另一种类型为评论数据
2.2.8 文档 document
文档是存储在ElasticSearch中的一个JSON格式的字符串。他就像在关系型数据库中表的一行。每个存储在索引中的一个文档都有一个类型和ID,每一个文档都是一个json对象,存储0个或者多个字段或者键值对
2.2.9 映射 mapping
映射像关系型数据库中的表结构,每一个索引都有一个映射,他定义了索引中的每一个字段类型,以及一个索引范围内的设置。一个映射可以视线被定义也可以在第一次文档存储的时候被自动识别
2.2.10字段 field
文档中包含零个或者多个字段,字段可以是一个简单的值也可以是一个数组会对象的嵌套结构。字段类似于关系型数据库中表的列。每一个字段都有一个类型。
ElasticSearch核心基础之入门篇相关推荐
- 零基础学C++——黑马程序员课程笔记(C++基础语法入门篇)
封面来自互联网侵删 视频地址:点击访问 (我这里开发工具选用VSstudio) 此笔记有三个系列: C++基础语法入门篇 C++核心编程篇 点击查看 C++提高编程篇 文章目录 C++初识 变量 常量 ...
- JavaScript 基础知识 - 入门篇(二)
11. 函数 11.1 函数的基础知识 为什么会有函数? 在写代码的时候,有一些常用的代码需要书写很多次,如果直接复制粘贴的话,会造成大量的代码冗余: 函数可以封装一段重复的javascript代码, ...
- Python基础语法入门篇(一)
Python基础语法入门篇(二) 1. 注释 在我们工作编码的过程中,如果一段代码的逻辑比较复杂,不是特别容易理解,可以适当的添加注释,以辅助自己 或者其他编码人员解读代码. 注释是给程序员看的,为了 ...
- Linux零基础快速入门篇
推荐教程:Linux零基础快速入门到精通 操作系统概述 操作系统是计算机软件的一种,它主要负责:作为用户和计算机硬件之间的桥梁,调度和管理计算机硬件进行工作而计算机,如果没有操作系统,就是一堆无法使用 ...
- ElasticSearch核心基础之映射
一 mapping相关的概念 1.1 映射类型 映射类型也就是我们所谓的type,一个索引可以一个或者多个类型.每一个映射类型包括: # 元数据字段:用来定义如何处理文档的元数据.元数据字段包括文档 ...
- ElasticSearch核心基础之索引管理
一 索引管理 1.1 创建索引 # 建立索引的时候,我们可以设置主分片和备份分片的数量通过setting字段number_of_shards和number_of_replicas字段设置 # 对于ES ...
- 网易云课堂Java应用基础:入门篇
第一章:用Eclipse来做计算 1.1第一个Java程序 1.2.1读输入 1.2.2变量 1.2.3赋值 1.3表达式 1.3.1浮点数 1.3.2运算符优先级 1.3.3类型转换 第一章编程题 ...
- 接口测试基础之入门篇(待续)
2019独角兽企业重金招聘Python工程师标准>>> 课程地址:https://www.imooc.com/learn/738 一.为什么做接口测试 地址栏大小有限制 二.接口测 ...
- ElasticSearch核心基础之聚合
一 聚合的分类 1.1 分组聚合(bucket) 分组聚合,就是指依据哪一个字段进行分组,然后该字段相同的值的文档都在一个bucket中 GET /索引/类型/_search { "s ...
最新文章
- Java中PreparedStatement和Statement的用法区别
- golang(5):编写WebSocket服务,client和html5调用
- none是不是python的保留字_Python主要保留字
- plsql连接oracle11g怎么配置,怎么使用plsql怎么连接64位Oracle11g数据库?
- 单位与单位的换算(二)
- python怎么读取excel-Python|读、写Excel文件(三种模块三种方式)
- html中怎么消除排序的前缀,北京web前端培训-解决css3前缀问题的插件-Autoprefixer...
- [译]C#7 Pattern Matching
- 【转】JSch - Java实现的SFTP(文件下载详解篇)
- 荔枝派通过usb烧录时出现ERROR: Allwinner USB FEL device not found!
- 使用Ehome协议将设备接入EasyCVR无法注册成功原因排查
- 云南网络文化经营许可证办理,云南办理网络文化经营许可证多少钱?文网文是什么?怎么办理文网文?办理文网文需要什么材料?
- 计算机中MAX函数是求什么,MAX函数
- 仿知乎的问答社区PHP系统+支持响应式/打赏功能
- 计算机为什么获取mac地址,电脑获取mac地址失败怎么办
- MixFormer: End-to-End Tracking with Iterative Mixed Attention解读
- lnkscape制作logo
- 手机号码归属地api文档
- android edittext numberdecimal,android – 如何在“手机”软键盘上使用InputType = numberDecimal?...
- 整理最全的“大数据”学习资源
热门文章
- mysql 从库修改表结构_在mysql数据库中---修改表结构
- JVM初学之JVM的垃圾回收机制与垃圾回收器
- Java Integer类中的parseInt和valueOf的区别
- 非法控制计算机信息系统罪的标准,非法获取计算机信息系统数据、非法控制计算机信息系统罪立案标准...
- java基本命令_java基础篇 快捷键 常见Dos命令等等
- css 右上角 翻开动画_css制作电闪雷鸣的天气图标
- 解决关闭hbase时stop-hbase.sh报错stopping hbasecat: /tmp/hbase-xxxx-master.pid: No such file or directory
- python判断一个日期对应的节假日名
- linux怎么判断全局符号,Linux下全局符号覆盖有关问题
- java 身份证地址提取籍贯_从身份证号码中提取信息,这些方法请收好