随笔分类 -  搜索引擎

和有关搜索相关的内容,包括:elasticsearch 和 solr
摘要:index/create 第一步判断是确定插入的文档是否指定id,如果没有指定id,系统会默认生成一个唯一id。 这种情况下,不管index还是create会直接add文档。如果用户指定了id,那么就会走update,update成本比add要高。 第二步判断,会检查版本号是否冲突,只有正确的版本号 阅读全文
posted @ 2017-11-20 11:03 星火燎原智勇 阅读(2841) 评论(0) 推荐(0)
摘要:摘要 当你某一天打开 Kibana 对应的 Monitoring 选项卡的时候,发现提示需要下载新的 license,旧的 license 已经过期了,试用期为30天,如果不是很需要其他的复杂监控、报警功能,只是需要一些简单的节点监控、索引监控和搜索监控等,那么只需要选择第一个 common 选项点 阅读全文
posted @ 2017-10-24 15:59 星火燎原智勇 阅读(3068) 评论(0) 推荐(1)
摘要:1. 什么是大文本?具体是什么? 首先需要理解,ElasticSearch 建立索引完成全文检索的前提是将待检索的信息导入到 ElasticSearch 中。而有的信息对应的正文内容会非常的大,可能达到 1MB ~ 3MB 左右字节,这个内容就认为是大文本,一般我们都将该内容存储到名为 conten 阅读全文
posted @ 2017-10-13 18:44 星火燎原智勇 阅读(1753) 评论(0) 推荐(0)
摘要:开篇 在ElasticSearch 系列十四中提到的问题即 ElasticStack系列之十四 & ElasticSearch5.x bulk update 中重复 id 性能骤降,继续这个问题再继续查看更加多的源代码,看看底层在执行 index、create 和 update 操作到底有什么不同, 阅读全文
posted @ 2017-10-13 16:30 星火燎原智勇 阅读(647) 评论(0) 推荐(0)
摘要:问题描述 一个线上集群,执行的 Query DSL 都是一样的,只是参数不同。统计数据显示 98% ~ 99% 的查询相应速度都很快,只需要 4 ~ 6ms,但是有 1% 左右的查询响应时间在 100ms ~ 200ms 之间。集群硬件配置较高,使用的是 SSD 硬盘,系统可用内存远高于索引所使用内 阅读全文
posted @ 2017-10-12 23:31 星火燎原智勇 阅读(938) 评论(0) 推荐(0)
摘要:目前在绝对多数公司在使用 ElasticSearch 将其当做数据库使用,将多个数据库中的数据同步到 ElasticSearch 索引是非常常见的应用场景。那么自然而然就会涉及到数据频繁的新增和更新,而官方的文档并没有对 update 的底层机制做特别说明,而当我们从 2.x 版本升级到 5.x 发 阅读全文
posted @ 2017-10-12 22:41 星火燎原智勇 阅读(2468) 评论(0) 推荐(0)
摘要:业务需求 1. 实现搜索引擎前缀搜索功能(中文,拼音前缀查询及简拼前缀查询功能) 2. 实现摘要全文检索功能,及标题加权处理功能(按照标题权值高内容权值相对低的权值分配规则,按照索引的相关性进行排序,列出前20条相关性最高的文章) 前缀搜索 中文搜索: 1. 搜索“刘”,匹配到“刘德华”、“刘斌”、 阅读全文
posted @ 2017-10-09 19:20 星火燎原智勇 阅读(624) 评论(0) 推荐(0)
摘要:问题 使用 ElasticSearch 做搜索 时,比如用户输入 --> 柠檬,搜出来的结果 --> 柠檬汽水,柠檬味牙膏等在前面,真正想要的水果那个 柠檬 在后面。已经在中文分词中加了 柠檬,还是不管用,正常来说 tf、idf 都一样,影响排序的只有 field norms。按道理 “柠檬” 的 阅读全文
posted @ 2017-10-09 18:53 星火燎原智勇 阅读(446) 评论(0) 推荐(0)
摘要:问题 1. jdbc-input-plugin 只能实现数据库的追加,对于 elasticsearch 增量写入,但经常 jdbc 源一端的数据库可能会做数据库删除或者更新操作。这样一来数据库与搜索引擎的数据库就出现了不对称的情况。当然你如果有开发团队可以写程序在删除或者更新的时候同步对搜索引擎操作 阅读全文
posted @ 2017-10-09 18:23 星火燎原智勇 阅读(607) 评论(0) 推荐(0)
摘要:1. 由 gc 引起节点异常 问题: 因为 gc 时会使 jvm 停止工作,如果某个节点 gc 时间过长,master ping 3次(zen discovery默认 ping 失败重试 3 次)不通后就会把该节点剔除出集群,从而导致索引进行重新分配。 解决方法: 1. 优化gc,减少gc时间。 2 阅读全文
posted @ 2017-08-04 11:50 星火燎原智勇 阅读(994) 评论(0) 推荐(0)
摘要:在生产环境下,如果不修改elasticsearch节点的角色信息,在高数据量,高并发的场景下集群容易出现脑裂等问题。 默认情况下,elasticsearch 集群中每个节点都有成为主节点的资格,也都存储数据,还可以提供查询服务。这些功能是由两个属性控制的。 1. node.master 2. nod 阅读全文
posted @ 2017-08-04 11:42 星火燎原智勇 阅读(7942) 评论(0) 推荐(1)
摘要:有很多人会有这样的一个疑问: _source字段存储的是索引的原始内容,那 store 属性的设置是为何呢?elasticsearch 为什么要把 store 的默认取值设置为 no?设置为 yes 是否是重复的存储呢? 我们将一个 field 的值写入 elasticsearch 中,是想在这个 阅读全文
posted @ 2017-08-04 00:32 星火燎原智勇 阅读(750) 评论(0) 推荐(0)
摘要:一、热更新原理 elasticsearch开启加载外部词典功功能后,会每60s间隔进行刷新字典。具体原理代码如下所示: 二、配置说明 我们公司以及用户常用的分词器为 IK 分词器,其中它有一个对应的核心配置文件名为:IKAnalyzer.cfg.xml,具体内容: 热更新 IK 分词使用方法,目前该 阅读全文
posted @ 2017-08-03 23:57 星火燎原智勇 阅读(4727) 评论(0) 推荐(1)
摘要:概述:solr 作为搜索引擎系统,它应该包含两部分内容,分别是:索引系统 和 搜索系统。 索引系统 它主要负责将外部不同数据源的数据转换为 solr 格式规范的数据格式(我们称之为:SolrInputDocument),一般常见到的外部数据源包含有 1. 关系型数据库:mysql、oracle 2. 阅读全文
posted @ 2017-05-03 00:04 星火燎原智勇 阅读(459) 评论(0) 推荐(0)
摘要:摘要:这次solr底层升级是一次比较大的升级。从底层搜索引擎 solr4.8 升级到 solr6.4.2,由于solr底层从6.x开始以来的jdk必须指定为1.8,而且很多内部实现类都已经废弃或者干脆被砍掉了,这样就导致了很多实现类都需要进行兼容性的处理,第三方依赖的库也需要跟着进行升级改造。例如I 阅读全文
posted @ 2017-03-06 23:36 星火燎原智勇 阅读(1218) 评论(1) 推荐(2)
摘要:悲观并发控制(PCC) 这一点在关系数据库中被广泛使用。假设这种情况很容易发生,我们就可以阻止对这一资源的访问。典型的例子就是当我们在读取一个数据前先锁定这一行,然后确保只有读取到数据的这个线程可以修改这一行数据。 乐观并发控制(OCC) Elasticsearch所使用的。假设这种情况并不会经常发 阅读全文
posted @ 2017-02-08 22:43 星火燎原智勇 阅读(1154) 评论(0) 推荐(0)
摘要:不仅是ElasticStack有以下这样的问题,包括solr或者说分布式系统在一定程度上都会存在以下的问题 脑裂 也叫网络分区,当网络由于发生异常情况,导致分布式系统中部分节点之间的网络延时不断增大,最终导致组成分布式系统的所有节点中,只有部分节点之间能够进行正常通信,而另一些节点则不能。当脑裂出现 阅读全文
posted @ 2017-02-08 18:29 星火燎原智勇 阅读(615) 评论(0) 推荐(0)
摘要:segment归并的影响 归并线程配置与策略 optimize ES数据写入流程 1. segment归并的影响 影响原因: 由之前的讲解我们已经知道数据怎么进入ElasticSearch并且如何才能让数据更快的被检索使用。其中用一句话概括了Lucene的设计思路就是“开新文件”,但另一个方面看,开 阅读全文
posted @ 2017-02-08 18:19 星火燎原智勇 阅读(661) 评论(4) 推荐(0)
摘要:索引分片 数据路由 mapping解析 倒排索引 写入存储 1. 索引分片 上图所示,一共有3个分片(shard),每个shard上有一个副本(replica),看到的蓝色图片为一个一个不同的datanode,目的是为了高可用。其中3个shard将所有的数据进行分割到不同的片上。如果使用es默认配置 阅读全文
posted @ 2017-02-08 18:08 星火燎原智勇 阅读(778) 评论(0) 推荐(0)
摘要:1. ElasticSearch的几个基本概念 <1. Index 类似于mysql数据库中的database <2. Type 类似于mysql数据库中的table表,es中可以在Index(database)中建立多个type(table),其中每个type结构可以使不同的,通过mapping进 阅读全文
posted @ 2017-02-08 17:16 星火燎原智勇 阅读(1896) 评论(0) 推荐(0)