ElasticSearch学习笔记

ElasticSearch

E:EalsticSearch 搜索和分析的功能

L:Logstach 搜集数据的功能,类似于flume(使用方法几乎跟flume一模一样),是日志收集系统

K:Kibana 数据可视化(分析),可以用图表的方式来去展示,文不如表,表不如图,是数据可视化平台

1.索引

通俗地来讲,正向索引是通过key找value,反向索引则是通过value找key。

1.1.正向索引

  • 这种组织方法在建立索引的时候结构比较简单,建立比较方便且易于维护
    若是有新的文档加入,直接为该文档建立一个新的索引块,挂接在原来索引文件的后面。若是有文档删除,则直接找到该文档号文档对应的索引信息,将其直接删除

1.2.反向索引

倒排索引

1.3.倒排索引的组成

单词词典、倒排列表

  • ·倒排表以字或词为关键字进行索引,表中关键字所对应的记录表项记录了出现这个字或词的所有文档。一个表项就是一个字段,它记录该文档的ID和字符在该文档中出现的位置情况

在这里插入图片描述
在这里插入图片描述

1.4.索引的更新策略

常用的索引更新策略主要有四种:完全重建策略、再合并策略、原地更新策略及混合策略。

2.分词器

2.1.定义

  • 文本分析是把全文本转换一系列单词(term/token)的过程,也叫分词。Analysis是通过Analyzer来实现的。
  • 分词器的作用就是把整篇文档,按一定的语义切分成一个一个的词条,目标是提升文档的召回率 并降低无效数据的噪音。
  • recall召回率,也叫可搜索性,指搜索的时候,增加能够搜索到的结果的数量。
  • 降噪:指降低文档中一些低相关性词条对整体搜索排序结果的干扰。

2.2.组成

  • 分析器(analyzer)都由三种构件块组成的: character filters,tokenizers,token filters
    • character filters字符过滤器
      在一段文本进行分词之前,先进行预处理
      比如说最常见的就是,过滤html标签(hello --> hello),& --> and (l&you -->l and you)
    • tokenizers分词器
      英文分词可以根据空格将单词分开,中文分词比较复杂,可以采用机器学习算法来分词。
      token filters Token过滤器
      将切分的单词进行加工。
      大小写转换(例将“Quick"转为小写),去掉词(例如停用词像"a"、“and"、 “the"等等),或者增加词(例如同义词像"jump"和"leap”)
  • analyzer = CharFilters (0个或多个) +Tokenizer(恰好一个)+TokenFilters(0个或多个)

2.3.内置分词器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.4.中文分词器

在这里插入图片描述

3.ES数据存储结构

在这里插入图片描述

3.1.索引Index

索引是文档(Document)的容器,是一类文档的集合
索引(名词)

  • 类比传统的关系型数据库领域来说,索引相当于SQL中的一个数据库(Database)
  • 索引由其名称(必须为全小写字符)进行标识。
    索引(动词)
  • 保存一个文档到索引(名词)的过程。
  • 这非常类似于SQL语句中的INSERT关键词。如果该文档已存在时那就相当于数据库的UPDATE。
    索引(倒排索引)
  • 关系型数据库通过增加一个B+树索引到指定的列上,以便提升数据检索速度。
  • 索引ElasticSearch 使用了一个叫做倒排索引的结构来达到相同的目的。

3.2.类型Type

从6.0.0开始单个索引中只能有一个类型,7.0.0以后将将不建议使用,8.0.0以后完全不支持。
索引和文档中间还有个类型的概念,每个索引下可以建立多个类型,文档存储时需要指定index和type

3.3.文档Document

在这里插入图片描述

3.4.字段Field

  • 先了解下restful中GET/PUT/POST/DELETE格式
    POST /uri #创建
    DELETE/uri/xxx #删除
    PUT /uri/xxx #更新或创建
    GET /uri/xxx #查看
  • 在ES中,如果不确定文档的ID,那么就需要用POST,它可以自己生成唯一的文档ID。如果确定文档的ID,那么就可以用PUT,当然也可以用POST,它们都可以创建或修改文档PUT、GET、DELETE是幂等的,而POST并不一定是幂等。

4.ES的基本命令

4.1.集群相关命令

在这里插入图片描述
在这里插入图片描述

4.2.索引CRUD命令

创建是命名全部小写,不能使用_开头,中间不能使用,

  • 创建lndex
    curl -XPUT http://192.168.58.161:9200/shsxt?pretty
  • 获取索引
    curl -XGET http://192.168.58.161:9200/shsxt?pretty
  • 删除索引
    curl -XDELETE http://192.168.58.161:9200/shsxt?pretty

4.3.映射Mapping

详细可查官方文档
在这里插入图片描述

4.4. head安装head使用

在这里插入图片描述
Elasticsearch插件推荐:cerebro

5.ES分片与备份

分片分为两种,主分片和副本:

  • 主分片用于解决数据水平扩展的问题,通过分片,可以将数据分布到集群内的所有节点之上
    一个分片是一个运行的ES实例
    分片数在索引创建时指定,后续不允许修改,除非Reindex。副本用以解决数据高可用的问题,副本是主分片的拷贝
  • 副本分片数,可以动态调整
    增加副本数,还可以在一定程度上提高服务的可用性(读取的吞吐)

分片的设定工

  • 分片设置过大,数量少
    导致后续无法增加节点实现水平扩展
    单个分片数据量过大,导致数据重新分片耗时
  • 分片设置过小,数量多
    影响搜索结果的相关性打分,影峒统计结果的准确性-单个节点上过多分片,会导致资源浪费,同时会影响性能- 7.0之后,默认主分片是1,解决了over-sharding的问题
    shard也是一种资源,shard过多会影响集群的稳定性。因为shard过多,元信息会变多,这些元信息会占用堆内存。
    shard过多也会影响读写性能,因为每个读写请求都需要一个线程。

6.ES数据架构

名词类比HBaseo
Shard – Region
Lucene – buffer --系统缓存
Segment – MemStore
写出Segment file --stroefile
Translog --Hlog

7.Docker,Windows,Linux下安装Elasticsearch

可以参考这篇:
https://blog.csdn.net/weixin_44991304/article/details/120578494

8.ES对外接口

集成Springboot

及项目实战:推荐狂神

1)JAVA API接口
http://www.ibm.com/developerworks/library/j-use-elasticsearch-java-apps/index.html

2)RESTful API接口
常见的增、删、改、查操作实现:
http://blog.csdn.net/laoyang360/article/details/51931981

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值