lucene

Google三驾马车:GFS、MapReduce和Bigtable

谁说我不能喝 提交于 2020-05-08 05:49:18
谈到分布式系统,就不得不提Google的三驾马车:Google fs[1],Mapreduce[2],Bigtable[3]。 虽然Google没有公布这三个产品的源码,但是他发布了这三个产品的详细设计论文。而且,Yahoo资助的Hadoop也有按照这三篇论文的开源Java实现:Hadoop对应Mapreduce, Hadoop Distributed File System (HDFS)对应Google fs,Hbase对应Bigtable。不过在性能上Hadoop比Google要差很多,参见表1。 Experiment HBase20070916 BigTable random reads 272 1212 random reads (mem) Not implemented 10811 random writes 1460 8850 sequential reads 267 4425 sequential writes 1278 8547 Scans 3692 15385 表1。Hbase和BigTable性能比较(来源于http://wiki.apache.org/lucene-hadoop/Hbase/PerformanceEvaluation) 以下分别介绍这三个产品: Google fs GFS是一个可扩展的分布式文件系统,用于大型的、分布式的

渣渣菜鸡的 ElasticSearch 源码解析 —— 启动流程(上)

本秂侑毒 提交于 2020-05-07 22:13:50
<!-- more --> 关注我 转载请务必注明原创地址为: http://www.54tianzhisheng.cn/2018/08/11/es-code02/ 前提 上篇文章写了 ElasticSearch 源码解析 —— 环境搭建 ,其中里面说了启动 打开 server 模块下的 Elasticsearch 类:org.elasticsearch.bootstrap.Elasticsearch,运行里面的 main 函数就可以启动 ElasticSearch 了,这篇文章讲讲启动流程,因为篇幅会很多,所以分了两篇来写。 启动流程 main 方法入口 可以看到入口其实是一个 main 方法,方法里面先是检查权限,然后是一个错误日志监听器(确保在日志配置之前状态日志没有出现 error),然后是 Elasticsearch 对象的创建,然后调用了静态方法 main 方法(18 行),并把创建的对象和参数以及 Terminal 默认值传进去。静态的 main 方法里面调用 elasticsearch.main 方法。 public static void main(final String[] args) throws Exception { //1、入口 // we want the JVM to think there is a security manager

springboot 集成elasticsearch

自古美人都是妖i 提交于 2020-05-07 21:35:19
In this article, we will discuss about “How to create a Spring Boot + Spring Data + Elasticsearch Example”. Tools used in this article : Spring Boot 1.5.1.RELEASE Spring Boot Starter Data Elasticsearch 1.5.1.RELEASE Spring Data Elasticsearch 2.10.RELEASE Elasticsearch 2.4.4 Maven Java 8 Note SpringBoot 1.5.1.RELEASE and Spring Data Elasticsearch 2.10.RELEASE supports only ElasticSearch 2.4.0. They don’t support the latest version of ElasticSearch 5.x version. Read this – Spring Data Elasticsearch Spring Boot version matrix Related – Elasticsearch Basics 2. Project Dependency Declares a spring

2020 java Elasticsearch面试题及答案(最全版本持续更新)

。_饼干妹妹 提交于 2020-05-07 11:54:03
前言 涵盖各大公司会问到的面试点,同时随着版本的升级,可能也会有一些面试题更新,也会同步保持更新,因为篇幅原因(其实是我懒,哈哈)所以列了一部分答案,所有的答案见下文,总共485页合计20个技术点,文末自取pdf. 1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。 面试官:想了解应聘者之前公司接触的 ES 使用场景、规模,有没有做过比较大规模的索引设计、规划、调优。 解答: 如实结合自己的实践场景回答即可。 比如:ES 集群架构 13 个节点,索引根据通道不同共 20+索引,根据日期,每日递增 20+,索引:10 分片,每日递增 1 亿+数据,每个通道每天索引大小控制:150GB 之内。 仅索引层面调优手段: 1.1、设计阶段调优 1、根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索 引; 2、使用别名进行索引管理; 3、每天凌晨定时对索引做 force_merge 操作,以释放空间; 4、采取冷热分离机制,热数据存储到 SSD,提高检索效率;冷数据定期进行 shrink 操作,以缩减存储; 5、采取 curator 进行索引的生命周期管理; 6、仅针对需要分词的字段,合理的设置分词器; 7、Mapping 阶段充分结合各个字段的属性,是否需要检索、是否需要存储等。 1.2

Elasticsearch学习之图解Elasticsearch中的_source、_all、store和index属性

三世轮回 提交于 2020-05-05 15:58:56
转自 : https://blog.csdn.net/napoay/article/details/62233031 1. 概述 Elasticsearch中有几个关键属性容易混淆,很多人搞不清楚_source字段里存储的是什么?store属性的true或false和_source字段有什么关系?store属性设置为true和_all有什么关系?index属性又起到什么作用?什么时候设置store属性为true?什么时候应该开启_all字段?本文通过图解的方式,深入理解Elasticsearch中的_source、_all、store和index属性。 如图1所示, 第二象限是一份原始文档,有title和content2个字段,字段取值分别为”我是中国人”和” 热爱”,这一点没什么可解释的。我们把原始文档写入Elasticsearch,默认情况下,Elasticsearch里面有2份内容,一份是原始文档,也就是_source字段里的内容,我们在Elasticsearch中搜索文档,查看的文档内容就是_source中的内容,如图2,相信大家一定非常熟悉这个界面。 另一份是倒排索引,倒排索引中的数据结构是倒排记录表,记录了词项和文档之间的对应关系,比如关键词”中国人”包含在文档ID为1的文档中,倒排记录表中存储的就是这种对应关系,当然也包括词频等更多信息

【生活现场】从诗词大会飞花令到elasticsearch原理解析(转)

我是研究僧i 提交于 2020-05-05 02:04:51
add by zhj: 作者是阿里的技术专家,把技术解释的通俗易懂,太牛了。该文转自作者的个人公众号:互联网侦察,里面有很多系列文章, 关于算法,大数据,面试现场三个系列,通过漫画学到知识,太棒了 原文: https://mp.weixin.qq.com/s/LD2VG6dRNYXOO9KE38F_Mg 作者:channingbreeze 公众号:互联网侦察 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。 对小史面试情况感兴趣的同学可以观看 面试现场系列 。 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节。 但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。 【倒排索引】 吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。 【索引量爆炸】 【搜索引擎原理】 【elasticsearch简介】 吕老师:但是lucene还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于lucene进行封装,写出了elasticsearch。 【elasticsearch基本概念】 吕老师:类型是用来定义数据结构的,你可以认为是mysql中的一张表。文档就是最终的数据了

solr

跟風遠走 提交于 2020-05-04 21:16:15
介绍一下Solr Solr是一个Java开发的基于Lucene的 企业级 开源 全文搜索 平台。 它采用的是反向索引,即从关键字到文档的映射过程。 Solr的资源以Document为对象进行存储,每个文档由一系列的 Field 构成,每个Field 表示资源的一个属性。 文档的Field可以被索引, 以提工高性能的搜索效率。 一般情况下文档都包含一个能唯一表示该文档的id字段。 Solr是一个Java开发的基于Lucene的 企业级 开源 全文搜索 平台。 它采用的是反向索引,就是从value到key的映射过程,能提高搜索效率 全文检索就是把原始文档根据一定的规则拆分成若干个关键词,然后根据关键词创建索引,当查询时先查询索引找到对应的关键词,并根据关键词找到对应的文档,也就是查询结果,最终把查询结果展示给用户的过程 说一下Solr的倒排索引 倒排索引就是从文档内容到文档序号的过程,将文档内容用solr自带分词器进行分词,然后作为索引,用二分法将关键字与排序好的索引进行匹配,进而查找到对应文档 二分法 倒排索引就 为什么要使用Solr 举个例子,当我们访问项目的邮轮旅游模块的航线搜索的时候,我们可以根据我们随意所想的内容输入关键字就可以查询相关的内容。这些随意的数据不可能是根据数据库的字段来查询的。这就需要全文检索工具来实现了 Solr和elasticsearch的区别 共同点

(转)终于有人把Elasticsearch原理讲透了!

北城以北 提交于 2020-05-04 11:12:25
终于有人把Elasticsearch原理讲透了! 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。 来源: 互联网侦察 | 2019-04-08 12:14 转自 小史是一个非科班的程序员,虽然学的是电子专业,但是通过自己的努力成功通过了面试,现在要开始迎接新生活了。 随着央视诗词大会的热播,小史开始对诗词感兴趣,最喜欢的就是飞花令的环节 但是由于小史很久没有背过诗词了,飞一个字很难说出一句,很多之前很熟悉的诗句也想不起来。 倒排索引 吕老师:但是我让你说出带“前”字的诗句,由于没有索引,你只能遍历脑海中所有诗词,当你的脑海中诗词量大的时候,就很难在短时间内得到结果了。 索引量爆炸 搜索引擎原理 Elasticsearch 简介 吕老师:但是 Lucene 还是一个库,必须要懂一点搜索引擎原理的人才能用的好,所以后来又有人基于 Lucene 进行封装,写出了 Elasticsearch。 Elasticsearch 基本概念 吕老师:类型是用来定义数据结构的,你可以认为是 MySQL 中的一张表。文档就是最终的数据了,你可以认为一个文档就是一条记录。 吕老师:比如一首诗,有诗题、作者、朝代、字数、诗内容等字段,那么首先,我们可以建立一个名叫 Poems 的索引,然后创建一个名叫 Poem 的类型,类型是通过 Mapping

【漫画】ElasticSearch原理 必知必会的倒排索引和分词

让人想犯罪 __ 提交于 2020-05-04 08:27:11
倒排索引的初衷 倒排索引,它也是索引。索引,初衷都是为了快速检索到你要的数据。 我相信你一定知道mysql的索引,如果对某一个字段加了索引,一般来说查询该字段速度是可以有显著的提升。 每种数据库都有自己要解决的问题(或者说擅长的领域),对应的就有自己的数据结构,而不同的使用场景和数据结构,需要用不同的索引,才能起到最大化加快查询的目的。 对 Mysql 来说,是 B+ 树,对 Elasticsearch/Lucene 来说,是倒排索引。 倒排索引是什么 刚刚胖滚猪说到图书的例子,目录和索引页,其实就很形象的可以比喻为正排索引和倒排索引。为了进一步加深理解,再看看熟悉的搜索引擎。没有搜索引擎时,我们只能直接输入一个网址,然后获取网站内容,这时我们的行为是document -> words。此谓「正向索引」。后来,我们希望能够输入一个单词,找到含有这个单词,或者和这个单词有关系的文章,即word -> documents。于是我们把这种索引,叫「反向索引」,或者「倒排索引」。 好了,我们来总结一下: 倒排索引的实现 假如一篇文章当中,有这么一段话"胖滚猪编程让你收获快乐",我要通过"胖滚猪"这个词来搜索到这篇文章,那么应该如何实现呢。 我们是很容易想到,可以将这篇文章的词都拆开,拆分为"胖滚猪"、"编程"、"收获"、"快乐"。注意我们把没用的词,比如"让"去掉了

elasticsearch系列五:搜索详解(查询建议介绍、Suggester 介绍)

醉酒当歌 提交于 2020-05-03 20:36:51
一、查询建议介绍 1. 查询建议是什么? 查询建议,为用户提供良好的使用体验。主要包括: 拼写检查; 自动建议查询词(自动补全) 拼写检查如图: 自动建议查询词(自动补全): 2. ES中查询建议的API 查询建议也是使用_search端点地址。在DSL中suggest节点来定义需要的建议查询 示例1:定义单个建议查询词 POST twitter/_search { "query" : { "match": { "message": "tring out Elasticsearch" } }, "suggest" : { <!-- 定义建议查询 --> "my-suggestion" : { <!-- 一个建议查询名 --> "text" : "tring out Elasticsearch", <!-- 查询文本 --> "term" : { <!-- 使用词项建议器 --> "field" : "message" <!-- 指定在哪个字段上获取建议词 --> } } } } 示例2:定义多个建议查询词 POST _search { " suggest ": { " my-suggest-1 " : { "text" : "tring out Elasticsearch", "term" : { "field" : "message" } }, " my-suggest-2 "