乐趣区

关于java:Elasticsearch-技术分享-Elasticsearch-倒排索引这都是什么

前言

反动同志是块砖,哪里须要哪里搬!这不,老大发话,要我在组内做一个 Elasticsearch 技术分享。这不话题一转,开始看起来 ES 了。尽管很久之前用过 ELK 做过日志监控零碎,然而毕竟时隔已久,还是得从头看起。当然手头的活也不能停,话不多说,开始分享。先看看什么是 ES?

公众号:『刘志航』,记录工作学习中的技术、开发及源码笔记;时不时分享一些生存中的见闻感悟。欢送大佬来领导!

什么是 ES

Elasticsearch 是分布式搜寻和剖析引擎。

Elasticsearch 为所有类型的数据提供 近实时(near real-time)的搜寻和剖析。

罕用场景:

  1. 网站搜寻
  2. ELK 日志采集,存储,剖析
  3. 地理信息系统剖析

像下图中应用的设计:

特点:

  1. ES 是一个分布式文档存储,存储的数据都是序列化为 JSON documents。
  2. 应用 倒排索引 存储数据,倒排索引比拟适宜全文本搜寻。
  3. 基于 Apache Lucene 搜索引擎库,能够存储,检索文档及元数据。
  4. 反对 JSON 款式的查询语言——Query DSL,也反对 SQL 款式的查问。
  5. 集群部署,易于扩大。节点(node)分片(shard),将新的 node 增加到集群时,ES 会主动迁徙 shard 到新 node 上,从新均衡集群。

    1. shard 分为两种 主分片(primary shard)和 正本分片(replica shard)
    2. replica shard 寄存的是 primary shard 的冗余正本 —— 能够避免集群故障,数据失落,同时能够进步搜寻或检索速度。
    3. 在创立索引时 primary shard 数量是固定的,而 replica shard 数量是能够更改的。
    4. 分片由索引配置,分片越多,保护索引则开销则越大,分片大小越大,则 ES 在增减节点从新均衡集群时,分片挪动工夫越长。
  6. 集群复原:跨集群复制(CCR),能够主动将索引从主集群同步到热备份的辅助近程集群。

什么是倒排索引?

倒排索引也能够成为反向索引。

作为开发咱们常常接触到的就是 MySql,假如有一堆技术书籍,并且曾经编上号。

  1. Java 并发编程之美
  2. Java 开发手册
  3. 深刻分布式缓存
  4. Java 并发程序设计
  5. 算法
  6. 数据结构与算法
  • 如果放在 MySql 外面就是这样
id book_name
1 Java 并发编程之美
2 Java 开发手册
3 深刻分布式缓存
4 Java 并发程序设计
5 算法
6 数据结构与算法

此时我想查问所有对于 并发 的书籍。

select * from table_book where book_name like % 并发 %;

而后会开始遍历表格,查找到 1 和 4 两条记录。

  • 如果是倒排索引解决的话

首先会将每个名称进行分词,比方 Java 并发编程之美 会被分为 Java 并发 编程
分词完结之后依照词关联书籍的编号。

term ids
Java 1、2、4
并发 1、4
编程 1
算法 5、6
分布式 3

在倒排索引中搜寻 并发 ,而后进行检索,就很容易定位到对于 并发 书籍的编号。

那什么是 Lucene?

Lucene 能够了解为一个开源的、高性能、可伸缩的信息搜寻库。应用 Java 开发,封装了各种倒排索引和搜寻的 API。相当于一个组件。

而 ES 就是在 Lucene 之上进行的开发,从而能够 高可用 集群部署 故障迁徙 备份容灾 等。

总结

就这么多,先晓得个 ES 是干嘛的。后续再缓缓看、缓缓总结。

退出移动版