![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
es,solr 搜索相关
文章平均质量分 93
普通网友
这个作者很懒,什么都没留下…
展开
-
ElasticSearch 性能优化06
elasticsearch为什么比mysql快想要搞清这个问题要从mysql和ES的索引数据结构下手,咱们先了解一下mysql的索引结构,然后再了解一下ES的索引结构,然后再进行对比这个问题就会很清楚了。mysql关系型数据库索引原理:数据库的索引是B+tree结构主键索引是聚合索引,其他索引是非聚合索引两者对比:第一种情况:基于分词后的全文检索:例如select * from test where name like '%张三%',对于关系型数据库mysql来说原创 2020-06-11 20:51:12 · 100 阅读 · 0 评论 -
ElasticSearch 源码分析21 CreateIndex
先看创建索引的方法入口 TransportCreateIndexAction 1.从创建索引请求request中获取cause,如果长度length == 0,那么就设置默认值api2.然后就根据request的index 来解析出indexName3.然后包装成为一个updateRequest4.继续调用createIndexService的createIndex方法,来创建索引5.创建索引调用onlyCreateIndex,并且有对应的创建回调处理6.提交创建索引..原创 2020-06-06 11:00:23 · 349 阅读 · 0 评论 -
ElasticSearch 源码分析20 Explain
二、_explain以上是对查询和分析过程进行说明,对于解释查询部分(好像和mysql挺像的),我们可以使用_explain向ElasticSearch询问庆于该文档是如何匹配(或者没有匹配上)的解释信息。例如,该文档能否在给定的查询中被检索到?如果找到了,ElasticSearch将返回分值计算的详细悠 ,以解释为什么该文档会匹配成功。1.获取上下文context2.然后根据请求的type和id,获取uidTerm3.从上下文获取索引的分片indexShard,然后调用Get获取结果原创 2020-06-05 23:48:46 · 360 阅读 · 0 评论 -
ElasticSearch 源码分析19 Node && search scroll
TransportNodesAction1.获取请求的nodes节点数组,获取不到就直接return2.循环nodes数组,然后获取每个node的nodeId3.根据nodeId创建nodeRequest,然后调用TransportService.sendRequest发送请求4.回调函数handleResponse来处理请求的响应respon++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++..原创 2020-05-08 21:47:55 · 261 阅读 · 0 评论 -
ElasticSearch 源码分析18 索引删除Delete && flush
TransportDeleteAction 执行索引删除操作从ES中删除一个文档的过程如下: 先从主分片中执行删除操作,再在所有的副本分片上执行删除操作。 所以核心流程分三步:s1: 从请求节点路由到主分片节点。s2: 在主分片节点执行删除操作。s3: 在所有的副本分片上执行删除操作。 关于删除,ES提供的是delete by id的思路。 早期ES是支持通过query...原创 2020-04-21 00:16:00 · 435 阅读 · 0 评论 -
ElasticSearch 源码分析17 TransportBroadcastAction分析
1.没有分片,就直接执行onOperation2.存在分片,就根据分片shard构造出shardRequest3.根据分片的nodeId获取node,校验如果node为空,就是异常exception4.如果存在node,就发送request,然后回调处理返回的结果onOperation5.监听处理返回的结果...原创 2020-04-20 23:51:42 · 196 阅读 · 0 评论 -
ElasticSearch 源码分析16 TransportAnalyzeAction 分析
TransportAction 基类执行的时候会调用到execute,然后执行requestFilterChain.proceed方法+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++TransportAnalyzeAction 用来执行对请求request的analyze分析,...原创 2020-04-20 23:37:11 · 338 阅读 · 0 评论 -
ElasticSearch 性能优化05
n个节点: n(from+100)条数据后续的文档读取上一次查询返回的scroll_id 来不断的取下一页,如果srcoll_id 的生存期很长,那么每次返回的 scroll_id 都是一样的,直到该 scroll_id 过期,才会返回一个新的 scroll_id。请求指定的 scroll_id 时就不需要 /index/_type 等信息了。每读取一页都会重新设置 s...原创 2020-04-27 14:09:40 · 254 阅读 · 0 评论 -
ElasticSearch 知识点01
1、elasticsearch 了解多少,说说你们公司 es 的集群架构,索引数据大小,分片有多少,以及一些调优手段 。仅索引层面调优手段:1.1、设计阶段调优(1)根据业务增量需求,采取基于日期模板创建索引,通过 roll over API 滚动索引;(2)使用别名进行索引管理;(3)每天凌晨定时对索引做 force_merge 操作,以释放空间;(4)采取冷热分离机制...原创 2020-03-28 17:43:44 · 117 阅读 · 0 评论 -
ElasticSearch 性能优化总结 04
Elasticsearch是如何实现Master选举的?Elasticsearch的选主是ZenDiscovery模块负责的,主要包含Ping(节点之间通过这个RPC来发现彼此)和Unicast(单播模块包含一个主机列表以控制哪些节点需要ping通)这两部分; 对所有可以成为master的节点(node.master: true)根据nodeId字典排序,每次选举每个节点都把自己所知道节点排...原创 2020-03-17 21:56:21 · 969 阅读 · 0 评论 -
ElasticSearch 源码分析 十五 ThreadPool
原创 2020-02-15 22:34:50 · 205 阅读 · 0 评论 -
ElasticSearch 源码分析 十四 集群节点通信 Transport
分别负责rpc和http 请求的传输对结果的处理,回调函数原创 2020-02-15 22:27:10 · 243 阅读 · 0 评论 -
ElasticSearch 源码分析 十三 集群
Cluster 模块封装了集群层面要执行的任务原创 2020-02-15 17:49:52 · 195 阅读 · 0 评论 -
ElasticSearch 源码分析 十二 索引 分片和快照
1.首先判断不能有死节点deadNodes2.然后对所有未分配的节点进行分配对于gatewayAllocator ,先分配主分片,再分配副分片下面是在节点上初始化分片shard主分片如果被decider拦截,则尝试强制分配+++++++++++++++++++++++++++++++++++++...原创 2020-02-15 16:20:49 · 211 阅读 · 0 评论 -
ElasticSearch 源码分析 十一 索引恢复流程
使用Translog 来恢复 fileSystem cache丢失的数据索引的恢复分为以下几种: 1. EXISTING_STORE : 主分片从本地恢复 1.1 启动一个新的线程池,执行主分片的恢复。调用recoverFromStore 1.2 先判断canRecover: 索引的分片不能是closed,当前不能是主分片,必须是副分片 1.3 ...原创 2020-02-09 22:37:42 · 489 阅读 · 0 评论 -
ElasticSearch 课程笔记 13
80 | 使用Index Pattern配置数据81 | 使用Kibana Discover探索数据82 | 基本可视化组件介绍83 | 构建Dashboard88 | 用ELK进行日志管理原创 2020-02-01 16:38:30 · 162 阅读 · 0 评论 -
ElasticSearch 课程笔记 12
76 | 索引全生命周期管理及工具介绍77 | Logstash入门及架构介绍78 | 利用JDBC插件导入数据到Elasticsearch79 | Beats介绍...原创 2020-02-01 15:51:05 · 143 阅读 · 0 评论 -
ElasticSearch 课程笔记 11
69 | 提升集群写性能从index buffer refresh到filesystem cache 后,可以被搜索修改成不是每次请求都落盘70 | 提升集群读性能计算好再存入ES中,这样查询时候就省去计算的逻辑使用filter,会利用到cache72 | 段合并优化及注意事项提交点 comm...原创 2020-01-21 22:25:22 · 177 阅读 · 0 评论 -
ElasticSearch 课程笔记 10
第十章 生产环境中的集群运维 65 | 生产环境常用配置与上线清单如果是生产模式启动,那么必须要经过bootstrap的检测 ,包括JVM和Linux的检查剩下内存的50%,需要加入Lucene,做全文检索使用;JVM 在内存对象小于32G,会使用内存对象指针压缩第3优先级为命令行,command-line,会覆盖ES本身yml文件的设定...原创 2020-01-20 21:17:17 · 134 阅读 · 0 评论 -
ElasticSearch 课程笔记 09
59课 常见ES集群部署方式60课 ES的Hot && Shard架构 与 Shard Filtering62课 对集群容量进行规划...原创 2020-01-17 22:56:34 · 152 阅读 · 0 评论 -
ElasticSearch 课程笔记 08
41课 分布式查询及相关性算分42课 排序及doc values43.分页与遍历快照时间5m,代表5分钟44 并发读写原创 2020-01-15 23:01:06 · 102 阅读 · 0 评论 -
ElasticSearch 课程笔记 07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++38课 分片和故障转移ES 7.0 开始,主分片数默认修改为1,副本分片数默认修改为039课 文档的分布式存储40课 分片及其生命周期...原创 2020-01-13 22:37:31 · 110 阅读 · 0 评论 -
ElasticSearch 课程笔记 06
30课 多语言及中文分词与检索IK 分词器: 支持字典的热更新+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++31课,全文搜索的具体案例++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...原创 2020-01-11 20:41:32 · 181 阅读 · 0 评论 -
ElasticSearch 极客时间课程笔记 05
第27课+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++第28课++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++2...原创 2020-01-11 17:40:43 · 202 阅读 · 0 评论 -
ElasticSearch 极客时间课程笔记 04
使用constant_score,把query转换成filter,可以减少根据TF-IDF算分导致的开销使用AND 操作符,控制匹配同时出现Matrix和reloaded的文档++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...原创 2020-01-09 22:35:51 · 669 阅读 · 0 评论 -
ElasticSearch 极客时间课程笔记 03
q=2012,泛查询,正对_all所有字段, 代表是对所有字段的查询,查询性能会很差+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++slop:1 , 代表中间可以有一个其他的字符++++++++++++++++++++++++++++++...原创 2020-01-08 23:03:01 · 332 阅读 · 0 评论 -
ElasticSearch 极客时间课程笔记 02
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++原创 2020-01-07 22:59:17 · 245 阅读 · 0 评论 -
ElasticSearch 极客时间课程笔记 01
原创 2020-01-07 22:37:22 · 473 阅读 · 0 评论 -
ElasticSearch 性能优化总结 03
https://www.cnblogs.com/zhangan/p/11231990.html一、节点层 : 不要为bulk和search分配过大的队列。队列越大,GC的压力也会越大 搜索操作很依赖对系统cache的命中,标准的建议是把50%的可用内存作为ES的堆内存,为Lucene保留剩下的50%,用作系统cache二、索引设计优化 1.尽量避免使用嵌套或者pare...原创 2020-01-05 11:54:45 · 376 阅读 · 0 评论 -
ElasticSearch 性能优化总结 02
搜索速度优化19.1 为文件系统cache预留足够的内存 19.2 使用更快的硬件19.3 文档模型 尽量避免join操作,嵌套会使得查询慢几倍,父子关系可能使查询慢数百倍19.4 预索引数据 ++++++++++++++++++++++++++++++++++++++++++++++19.16 限制搜索...原创 2020-01-04 23:24:40 · 153 阅读 · 0 评论 -
ElasticSearch 性能优化总结 01
倒排索引是搜索引擎的核心。搜索引擎的主要目标是在查找发生搜索条件的文档时提供快速搜索。倒排索引是一种像数据结构一样的散列图,可将用户从单词导向文档或网页。它是搜索引擎的核心。其主要目标是快速搜索从数百万文件中查找数据。一般情况下,像下面的一样,在书中我们已经倒过来索引。根据这个词,我们可以找到这个词所在的页面。ElasticSearch中的集群、节点、索引、文档、类型是什么? ...原创 2020-01-04 21:33:03 · 523 阅读 · 0 评论 -
ElasticSearch 源码分析十 ES搜索实现 Search(三)
fetch阶段的步骤 :通过文档id获取完整的文档内容(1)首先对query结果进行排序,获取要fetch的doc id(2)按shard把这些id填充到docIdsToLoad对象中(3)按shard去elasticsearch获取文档详情,因为此时已经有了文档的id,所以就发送GET请求获取(4)将第一步中已经排好序的文档与fetch到的结果按照顺序合并(5)如果请求中有scr...原创 2019-12-06 21:50:05 · 736 阅读 · 0 评论 -
ElasticSearch 源码分析九 ES搜索实现 Search(二)
会进入到RestSearchAction的prepareRequest来准备请求先看对search请求的解析,调用方法parseSearchRequest。1.校验request请求中的索引index字符串不为空,然后转换成indices字符数组2.设置批量大小,预过滤分片大小,最大并行分片请求数量; 把请求涉及的本集群shard列表,和远程集群的shard列表进行合并3...原创 2019-12-04 22:20:23 · 502 阅读 · 0 评论 -
ElasticSearch 源码分析八 ES搜索实现 Search(一)
搜索任务被分成两步,query and fetch建立索引和执行搜索的原理词 --> 生成倒排和正排索引9.1.2 执行搜索 1. 对检索字段使用建立索引时相同的分析器进行分析,产生Token列表 2.根据查询语句的语法规则转换成一棵语法树 3.查找符合语法树的文档 4.对匹配到的文档列表进行相关性评分,使用TF/IDF...原创 2019-12-01 12:01:07 · 615 阅读 · 0 评论 -
ElasticSearch 源码分析七 ES读取索引 Get操作
GET或者MGET,必须指定三元组 _index, _type,_id , 是根据_id从正排索引中获取内容。而search不指定_id, 根据关键词从倒排索引中获取内容。程序入口TransportSingleShardAction的doExecute方法可以看到是调用异步AsyncSingleAction先看下异步action的构造函数1.获取当前es的集群状态c...原创 2019-12-01 11:58:05 · 1353 阅读 · 0 评论 -
ElasticSearch 源码分析六 服务端 索引(2)
调用TransportShardBulkAction的execute方法执行索引操作1.调用executeIndexRequestOnPrimary,在主分片上面进行索引2.继续调用primary.applyIndexOperationOnPrimary执行写主分片3.调用applyIndexOperation执行写索引 3.1 校验写的版本号version 3...原创 2019-11-30 16:02:42 · 225 阅读 · 0 评论 -
ElasticSearch 源码分析五 服务端 批量索引(1)
先看批处理bulk的实现核心类TransportBulkAction,批量索引Ingest node主要是通过使用ingest pipeline来对文档在索引之前进行转换或者增强。直接看执行方法doExecute1.判断如果这个bulkRequest是hasIndexRequestsWithPipelines,有一个ingest pipeline的增强,就直接retu...原创 2019-11-25 22:52:13 · 326 阅读 · 0 评论 -
ElasticSearch 源码分析四 客户端client
代码结构如下再看一下client包的代码依赖图,根接口为ElasticSearchClient三大客户端1:HTTP客户端(Rest Client)HTTP在大多数编程语言中得到很好的支持,这是连接到Elasticsearch的最常见的方法。如果要使用HTTP,还有一个重要的选择:使用一个现有的Elasticsearch基于HTTP的库,或者只是创建一个小的包装器,需要使...原创 2019-11-24 18:11:17 · 215 阅读 · 0 评论 -
ElasticSearch 源码分析三 节点Node初始化 && 启动
Node类源码结构核心类Node先看Node的构造函数1.创建nodeEnvironment,节点的环境信息2.读取jvm信息 jvmInfo3.创建pluginService对象,会加载所有的模块和插件4.然后调用pluginService更新settings配置文件5.再初始化最终的environment6.创建一个线程池,包含一个List<Exec...原创 2019-11-23 13:09:10 · 297 阅读 · 0 评论 -
ElasticSearch 源码分析二 启动流程 初始化
https://blog.csdn.net/ZYC88888/article/details/82868674启动流程,重点看bootstrap包下核心类ElasticSearch,程序执行入口main函数1.先创建SecurityManager 管理器,然后注册错误监听,监听错误事件2.调用main,返回状态;如果不是OK状态,就调用exit退出继续调用父类comm...原创 2019-11-23 10:54:50 · 264 阅读 · 0 评论