栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

【elasticsearch】在学习es的使用前,总要先了解下它的基本概念

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【elasticsearch】在学习es的使用前,总要先了解下它的基本概念

elasticsearch 基本概念

是面向文档的、实时的分布式搜索分析引擎,其中索引和搜索的功能由Lucene实现。
实时:新增的数据在短时间内(1s)内可以搜索到
分布式:可以动态对集群规模进行调整、扩容
Lucene:java写的全文搜索框架,用于处理纯文本的数据,主要用于建立索引、执行搜索,所以并不包括分布式的服务。
全文索引:对于全部的文本数据进行分析并建立索引,使其可以被搜索。
es可以让我们轻易实现搜索引擎的功能如日志分析,配合开源爬虫建立垂直领域搜索引擎等。其聚合功能可以用来进行数据的分析统计。

索引结构

由_index,_type,_id标识唯一文档。
ps:有些文章里将其和关系型db作对比,把_index比作数据库、_type比作表,这个理解有误,避免混淆,在es后续更新中将弱化、删除_type的概念。在操作数据的时候最好用_index为单位。

分片

单机无法存储海量数据,为了大规模处理、存储,通过增加机器的方式提高系统水平扩展的能力。可以将海量数据分成多块存储到多台机器上。
每个分片可以单独承担读写的功能,集群规模变更时,增加分片,并迁移原分片。
分布式中为了保证高可用,将每个分片设置主从的概念:主分片和副分片,实现读写分离(主写从读,降低集群各节点的压力),但同时由于增加了系统的复杂度,可能会导致数据一致性的问题。
可以设置索引别名,指向一个或多个索引,避免单个索引数据量过大膨胀的问题。
索引和分片的关系:

动态更新索引

对于文章建立索引之后,建立了倒排索引的数据结构,而倒排索引在建立以后是不可变的,即不会有并发问题,能被文件系统缓存。
对于每条数据的更新、删除,都只是对其进行一个标记并放到一个单独的位置,并没有真正的做删除。因此被删除的数据依旧在磁盘存在!

近实时搜索

es每次产生一个Lucene的新分段,先将其写入文件系统缓存,稍后flush刷入磁盘,而写入内存的操作很快,所以能很快被搜索到。
由于每次刷新不会实时落盘,所以如果宕机小概率会丢失数据,所以要将每次操作记录事务日志,在es启动的时候同步操作的记录。

段合并

在Lucene的段数据太多的情况下,由于每次搜索需要遍历所有的段再合并结果,会导致速度变慢。需要对分段进行合并(例如将相似大小的分段合并),在合并操作以后标记为删除的字段才算删除。
在段合并过程中,会需要一定量的磁盘空间,如果没有保证有足够的磁盘空间的话,比如一个段超过了磁盘一半的空间就会导致无法合并,部分数据就无法物理删除。

客户端API

要通过客户端对集群读写时,有REST接口,JAVA REST API 或者JAVA API。
JAVA REST API 是对REST接口的封装,走9200端口;
JAVA API走9300端口,而JAVA API由于历史包袱等原因,将在7.0、8.0版本逐渐废除。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1000444.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号