searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

Elasticsearch简介

2024-04-26 01:07:31
1
0

一、Elasticsearch介绍

Elasticsearch是一个分布式、可扩展、近实时的高性能搜索与数据分析引擎。

Elasticsearch的特点和优势:

  • 分布式实时文件存储
  • 实时分析的分布式搜索引擎,多分片多副本
  • 高可扩展性,可扩展到上百台服务器.
  • 可插拔插件支持
1、数据搜索方式

数据类型:结构化数据和非结构化数据

搜索类型:结构化数据搜索和非结构化数据搜索

结构化数据搜索:顺序扫描、关键词精确匹配、关键词部分匹配

非结构化数据搜索:顺序扫描、全文检索

全文检索是一种空间换时间的做法---数据索引创建消耗时间和空间

2、倒排索引

词条(Term)、词典(Term Direction)、倒排表(Post List)

词条:是索引里面最小的存储和查询单位,一般指一个单词或中文中分词后的词组

词典:是词条的集合

倒排表:

文档ID

词频TF,该单词在文档中出现的次数,用于相关性评分

位置position 单词在文档分词中的位置,用于短语搜索(phrase query)

偏移(offset) 记录单词的开始结束位置,实现高亮显示

指定某些字段不做索引:

优点:节省存储空间

缺点:字段无法被搜索

二、基本概念

  • Node和Cluster

Elastic是一个分布式的,允许多台服务器协同工作,每台服务器可以运行多个Elastic实例。单个Elastic实例称为一个节点(node)。一组节点构成一个集群(Cluster),集群由具有相同cluster.name的一个或多个节点组成。节点的状态:Green、Yellow和Red三种状态

  • Index

索引,ES存储数据的地方,类似于关系数据库的Database。文档的容器

  • Shards

索引分片, 是ES提供分布式搜索的基础,其含义是为将一个完整的index分成若干个部分存储在相同或者不同节点上,这些组成index的部分就叫做shard。当查询的索引分布在多个分片时,ES会把查询发送给每个相关的分片,并将结果组合起来,应用程序不知道分片的存在,这个过程对用户来说是透明的。创建索引时需要指定分片的数量,并且分片的数量一旦确定就不能更改。除非reindex。一个分片就是一个运行的Lucene实例
分片设置过小,导致后续无法水平扩展,单分片数据量大,导致数据重新分配耗时
分片设置过大,影响搜索结果的相关性打分,影响统计结果的准确性,单个节点上分片过多,导致资源浪费,影响性能。

  • Replicas

索引副本,ES可以设置多个索引的副本,副本的作用一是提高系统的容错性,当某个节点或者某个分片损坏或者丢失时可以从副本中恢复。二是提供ES的查询效率,ES会自动对搜索请求进行负载均衡。主分片不可用时,会从备份中选一个分片作为主分片,从而避免数据丢失。副本数量过多,会导致同步数据的性能损耗。

  • Recovery

数据恢复或者叫数据重新分布,ES在有节点加入或退出时会根据机器的负载对索引分片进行重新分配,挂掉的节点重新启动时也会进行数据的恢复。

  • Gateway

ES索引快照的存储方式,ES默认是先把索引存放在内存中,当内存满了时再持久化到本地硬盘。gateway对索引快照进行存储,当这个ES集群关闭再重新启动时就会从gateway中读取索引备份数据。

  • Discovery.zen

ES的自动发现节点机制,ES是一个基于p2p的系统,它先通过广播寻找存在的节点,再通过多播协议来进行节点之间的通信,同时支持点对点的交互。

  • Document

Index里面单条的记录称为Document(文档)。许多条Document构成一个Index。Documnet使用JSON格式表示。每个文档有一个UniqueID,可以自己指定或者ES自动生成。

  • Setting

    对集群中索引的定义信息,比如分片数、副本数

  • Mapping

    保存了定义索引中字段的存储类型、分词方式、是否存储等信息,字段信息一旦创建就无法修改,只能新加字段

  • Analyzer

    默认的标准Analyzer包含一个标准的Tokenizer和三个Filter组成。即Standard Token Filter、Lower Case Token Filter和Stop Token Filter

0条评论
0 / 1000
x****n
6文章数
0粉丝数
x****n
6 文章 | 0 粉丝