lucene

#Lucene搜索:Suggest联想词

ⅰ亾dé卋堺 提交于 2020-09-29 11:50:39
lucene的联想词是在org.apache.lucene.search.suggest包下边,提供了自动补全或者联想提示功能的支持。 Suggest介绍 <!-- 搜索提示 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-suggest</artifactId> <version>7.2.1</version> </dependency> Suggest深入 Suggest用例 1. Controller层 @RestController @RequestMapping(value = "/suggest") public class SuggestController { @Resource private SuggestService suggestService; /** * 推荐词搜索 * @param keyword * @return */ @GetMapping(value = "/searchSuggest") public List<DictionaryVO> searchSuggest(String keyword) { return suggestService.searchSuggest(keyword); } } 访问地址: localhost:2000

Elasticsearch面试题及答案详解

放肆的年华 提交于 2020-09-28 18:45:59
自知水平有限,欢迎大家留言拍砖指正。 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、写入调优 (1)写入前副本数设置为0; (2)写入前关闭refresh_interval设置为-1,禁用刷新机制; (3)写入过程中:采取bulk批量写入; (4)写入后恢复副本数和刷新间隔; (5

【Redis】求求你,别再问跳表了

白昼怎懂夜的黑 提交于 2020-09-24 05:29:23
目录 跳表 使用场景 结构描述 查询算法 插入算法 删除算法 时间复杂度 空间复杂度 总结 Redis使用跳表而不是红黑树? 跳表 使用场景 跳表(Skiplist )是一个特殊的链表,相比一般的链表,有更高的查找效率,可比拟二叉查找树, 平均期望的查找、插入、删除 时间复杂度都是O(log n) ,许多知名的开源软件(库)中的数据 结构均采用了跳表这种数据结构∶ Redis中的有序集合zset LevelDB、RocksDB、HBase中Memtable Apache Lucene中的Term Dictionary、Posting List 结构描述 我们拿我们以前的有序链表相比: 我们可以很清楚的看出,有序链表的查询比较慢,时间复杂度为O(n),它的删除和插入操作比较快,我们怎样才能让它的查询的时间复杂度也变快呢? 能不能将我们的链表实现二分的查找,也就是longN,答案是肯定的,也就是我们下面所说的这种跳表。 查询算法 跳表的查询和我之前做过的一道题特别类似, 二维数组的查找 假设我们查询 31 这个数字 我们的header开始,依次进行查询, 31不在负无穷到17,往右边,到达17,继续比较,在17到正无穷之间,往下跑 … 整个查询过程如下所示 插入算法 对于插入来说,我们比如要插入一个21的数值 类似查询算法,到达17这个点,进一步到达20这个点,然后在20的后面进行插入

Elasticsearch和Hbase对比分析

左心房为你撑大大i 提交于 2020-08-19 17:32:27
目录 为什么写这篇文章 一些重要概念 部署架构 数据写入 数据查询 负载均衡 数据合并策略 宕机恢复 为什么写这篇文章   可能有些童鞋已经发现:1.阿里云上的Hbase服务,基于Hbase深度定制和扩展,能比较好的支持时序场景和全文检索场景,其增强版Lindorm,已经作为单独的云服务售卖,单独演进。2.腾讯云上,基于ES构建了CTSDB时序数据库单独售卖,同时也推出了增强版的ES云服务。可以看出,在这两个服务所在团队中,一边选择基于ES来支持时序和全文检索场景,一边则选择基于Hbase来支持时序和全文检索场景。基于ES来支持时序和全文检索场景是比较好理解的,因为它本身的功能就支持这些,但是Hbase如何比较好支持全文检索场景呢?实际上,阿里云的Hbase服务借助了Solr这个搜索引擎来构建这块的能力,因为Solr和ES一样,都是基于Lucene构建的搜索服务。那为什么阿里不和腾讯一样,直接基于ES来构建这块的能力呢?Hbase和ES又究竟有哪些共同点,有哪些差异点呢?   总的来说,在数据量不是非常大的时候,使用ES更加简单,单纯使用ES就能解决各种查询场景的需求,但是当数据量非常大的时候,现有的社区版本ES则存在不少问题,这个时候往往需要进行一些内核级别的改进(否则就需要更多的业务层干预,并且成本消耗会比较高),类似阿里云和腾讯云上提供的ES服务,实际上都对ES内核做过改进

Elasticsearch 搜索工程师笔试面试,请先看这 10 条建议!

爱⌒轻易说出口 提交于 2020-08-19 05:43:59
1、今年xing 式不好,不要裸辞!! 要做好万全准备再提离职,拿到 offer 再离职也无可厚非!! 已经有很多球友 后悔 上半年裸辞了。 裸辞一时爽,事后悔断肠 。 2、可以适度包装一下简历,但绝对不能造假! 3、结合心仪公司心仪岗位灵活改简历,不要一套模板用到底。 去掉口语化、精简、凝炼简历; 千万不要有错别字、白字、语法错误; word 文档排版要主次分明,清晰明了。 电话等个人信息填错,项目经历中语句不通顺、错字、别字,标点符号、排版等乱七八糟的简历等都非常常见。 4、深度复盘开发过的产品或者做过的项目。 产品开发/ 项目经历要考虑尽量丰富,关键要点详实; 突出项目优势、亮点、你参与的工作和贡献; 如果有大数据规模开发、运维、架构、选型经验等都算加分项。 面试官问你 之前的工作 ,主要考察什么? 你的项目经历或产品开发经验。 有相关项目经验,在新公司能较快的开展工作。 面试官关注是你的 产出结果 ,而非过程。 你在项目中扮演的角色? 架构设计、方案选型、产品设计、需求对接、详细/概要设计、开发、运维、维护等。 参与过架构设计和仅 CRUD 的工程师是不一样的。 你遇到过什么问题,怎么解决的? 主要考察分析问题、解决问题的能力。 线下求助别人、线上网络搜索或者求助(google、stackoverflow、disscuss.elastic.co)、日志分析、源码分析等。

ElasticSearch(ES)和solr的关系和区别

允我心安 提交于 2020-08-19 03:33:47
参考文章: Elasticsearch与Solr搜索引擎选型调研文档 ElasticSearch(ES)和solr的关系和区别 Elasticsearch简介 Elasticsearch是一个实时的分布式搜索和分析引擎。 它可以帮助你用前所未有的速度去处理大规模数据。 它可以用于全文搜索, 结构化搜索以及分析, 当然你也可以将这三者进行组合。 Elasticsearch是一个建立在全文搜索引擎 Apache Lucene™ 基础上的搜索引擎, 可以说Lucene是当今最先进, 最高效的全功能开源搜索引擎框架。 但是Lucene只是一个框架, 要充分利用它的功能, 需要使用JAVA, 并且在程序中集成Lucene。需要很多的学习了解, 才能明白它是如何运行的, Lucene确实非常复杂。 Elasticsearch使用Lucene作为内部引擎, 但是在使用它做全文搜索时, 只需要使用统一开发好的API即可, 而不需要了解其背后复杂的Lucene的运行原理。 当然Elasticsearch并不仅仅是Lucene这么简单, 它不但包括了全文搜索功能, 还可以进行以下工作: 分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索。 实时分析的分布式搜索引擎。 可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。 这么多的功能被集成到一台服务器上,

ELK 中 Kibana 使用教程

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-18 19:49:39
Kibana 使用教程 Kibana 是什么 Kibana 是为 Elasticsearch 设计的开源分析和可视化平台。你可以使用 Kibana 来搜索,查看存储在 Elasticsearch 索引中的数据并与之交互。你可以很容易实现高级的数据分析和可视化,以图表的形式展现出来。 下面分别演示一下 Kibana(7.8.1 版本 ) 的自定义索引,搜索,控制台调用 es 的 api 和可视化等操作,特别需要注意的是,控制台可以非常方便的来调用 es 的 api ,强烈推荐使用。 如何加载自定义索引 访问本地 kibana 路由 http://27.0.0.1:5601/app/kibana#/home 展开左侧边栏,点击 【 Stack Management 】 点击 【 Index Pattern 】,再点击 【 Create index pattern 】 按钮 输入索引名字,可以支持模糊查询字符 *,注意不能使用空格和特殊字符 \, /, ?, ", <, >, | .。点击下一步【Next step】 Logstash 数据集会包含时间序列数据,所以确保 Time-field name 下拉列表中选择 @timestamp 字段。点击【 Create index pattern 】。索引创建成功。 搜索数据 使用一下 kibana 查看索引数据。点击左侧边栏【