![](https://img-blog.csdnimg.cn/2021011819425637.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
ElasticSearch
文章平均质量分 96
分布式数据检索中间件ElasticSearch
存在morning
乐于了解新技术,善于复盘总结,不是很聪明,但能够持续进步。
展开
-
【ElasticSearch从入门到放弃系列 零】ElasticSearch看这一篇就够了
大数据时代系统和业务每分每秒都产生成千上万的数据,其存储一定是不能通过关系型数据库了,当然因为数据的持久性也不能存储到内存型Nosql数据库Redis中,我们通常会将这些数据存储在能够不丢失数据的非关系型数据库中,这个技术选型有很多,例如HBase、Cassandra,这里我们暂不关心其数据存储,留待日后讨论,我们关注的是另一件事,如何能在分布式的数据库中进行PB级的数据检索,目前市场上较为成熟的解决方案中间件就是ElasticSearch,本文将对ElasticSearch进行全面讨论:全文检索的应用原创 2021-01-17 14:53:58 · 9106 阅读 · 1 评论 -
【ElasticSearch从入门到放弃系列 一】全文检索基本概念
因为公司的技术栈里,业务数据和日志的搜索使用的是ElasticSearch这一开源项目,学习不能光停留在使用阶段,要搞清楚就搞个彻底。于是自学了ElasticSearch的相关知识,整体的内容学习都遵循这个框架图分为几个部分从底至上的去学习,可以用如下的方式去理解:第一阶段:需求的产生:对于非结构化的数据,如何快速的获取想要的数据,说白了就是如何能进行全文检索第二阶段:全文检索引擎:Lucene这个开源的jar包可以帮助实现全文检索第三阶段:便捷的中间件:Lucene的使用较为繁琐,于是在Luce原创 2020-08-01 11:05:55 · 543 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 二】全文检索的实现思路
上一篇全文检索的基本概念讲到了为什么要有全文检索这样的需求,那么有了需求,就有实现,开源的全文检索引擎Lucene应运而生。Lucene的实现流程和原理如下图所示:上图的执行流程说明如下:左侧绿色部分表示索引过程,对要搜索的原始内容进行索引构建一个索引库,索引过程包括:确定原始内容即要搜索的内容—>采集文档—>创建文档—>分析文档—>索引文档右侧红色部分表示搜索过程,从索引库中搜索内容,搜索过程包括:用户通过搜索界面—>创建查询—>执行搜索—>从索引库搜索原创 2020-08-02 10:02:20 · 572 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 三】Lucene的基本概念和使用
上一篇blog介绍了全文检索的实现思路,这一篇呢主要介绍开源的搜索引擎Lucene是如何基于这样的思路来进行具体的实现的。Lucene基本概念Lucene是一个开放源代码的全文检索引擎工具包,但它不是一个完整的全文检索引擎,而是一个全文检索引擎的架构,提供了完整的查询引擎和索引引擎,部分文本分析引擎(英文与德文两种西方语言)。Lucene的目的是为软件开发人员提供一个简单易用的工具包,以方便的在目标系统中实现全文检索的功能,或者是以此为基础建立起完整的全文检索引擎。在Java开发环境里Lucene是一个原创 2020-08-15 14:44:27 · 487 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 四】ElasticSearch的基本概念和使用
上一篇blog详细介绍了lucene的基本概念和使用,本篇blog介绍的就是其工业级的应用ElasticSearch。也就是系列文章的主题。Elaticsearch,简称为es, es是一个开源的高扩展的分布式全文检索引擎,它可以近乎实时的存储、检索数据;本身扩展性很好,可以扩展到上百台服务器,处理PB[1024TB]级别的数据。es也使用Java开发并使用Lucene作为其核心来实现所有索引和搜索的功能,但是它的目的是通过简单的RESTful API来隐藏Lucene的复杂性,从而让全文搜索变得简单:原创 2020-08-18 10:21:04 · 507 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 五】ElasticSearch分布式集群搭建
上一篇blog介绍了ES的原理和基本使用方法,因为ES最厉害的地方就在于PB级别准实时的搜索能力,当然PB级的数据对于单个服务器去存储和检索还是很有难度的,所以ES一般使用时都使用分布式集群搭建。分布式相关概念级别概念集群 cluster一个集群就是由一个或多个节点组织在一起,它们共同持有整个的数据,并一起提供索引和搜索功能。一个集群由一个唯一的名字标识,这个名字默认就是“elasticsearch”。这个名字是重要的,因为一个节点只能通过指定某个集群的名字,来加入这个集群节原创 2020-08-19 09:26:27 · 491 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 六】Java客户端操作ElasticSearch
我们知道ES的操作方式有两种,一种是http风格的,一种是tcp风格的,http风格的我们可以通过发送请求去进行索引的增删改查等操作、tcp风格的处理方式则需要我们编码去调用实现,由于ES本身是基于Lucene,而Lucene又是Java的开源搜索引擎,所以我们用Java语言去实现ES的调用。环境配置创建一个带有Maven的Java项目,添加Jar包并引入Maven的坐标 <!--指定编译来源为jdk1.9--> <properties> <m原创 2020-08-20 10:11:13 · 400 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 七】Spring Data Elasticsearch的使用
上一篇blog介绍了如何通过java客户端来操作ES,可以看到,操作还是很繁琐的,需要连接集群、开启客户端连接等一系列繁琐的动作,在正式介绍前,先了解下概念Spring Data:Spring Data 项目的目的是为了简化构建基于 Spring 框架应用的数据访问计数,包括非关系数据库、Map-Reduce 框架、云数据服务等等;另外也包含对关系数据库的访问支持,当然Spring Data Elasticsearch就是为了简化对Elasticsearch访问的一个Spring Data的子模块。可以原创 2020-08-24 09:51:04 · 573 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 八】Elasticsearch集群深度探讨
概念回顾发现机制&选举机制节点分析故障&故障排查原创 2020-10-17 16:57:57 · 391 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 九】Elasticsearch原理机制探索
基础内容回顾写索引原理存储原理分段存储延迟写策略段合并性能优化原创 2020-10-17 22:06:52 · 655 阅读 · 2 评论 -
【ElasticSearch从入门到放弃系列 十】Elasticsearch深度分页查询方式讨论
在日常工作中,我们的方法提供两种接口用来分页批量的获取数据,第一种是普通的GetEntityList,另外一种是GetEntityIdListByScrollV2,第二种就是我们所说的Scroll方式查询数据。批量获取数据的时候为了性能总是推荐Scroll的方式,但是一直不明白这种方式是什么意思,今天来学习下几种不同的分页查询方式的适用场景。浅度分页适用场景一个搜索请求到来的时候,正如我在上篇blog【ElasticSearch从入门到放弃系列 九】Elasticsearch原理机制探索里谈到的,有一个原创 2020-10-18 11:46:25 · 599 阅读 · 0 评论 -
【ElasticSearch从入门到放弃系列 十一】Elasticsearch常用查询方式讨论及实践
在公司的日常操作中,仅限于用bool去拼一个filter,其它的东西一无所知,之前的学习也仅仅是了解了三种查询方式【通过id查询、通过term分词查询、通过queryString查询】【ElasticSearch从入门到放弃系列 四】ElasticSearch的基本概念和使用,其实对于ES的查询的理解还停留在了Lucene阶段,对于高级的查询方式并不熟悉,包括在后续的Java API,甚至Spring Data ES的使用中也仅仅是对ES查询做了简单了解,依然是【通过id查询、通过term分词查询、通过qu原创 2020-10-22 09:57:21 · 1011 阅读 · 0 评论