随笔分类 - elasticsearch&lucene
elasticsearch&lucene
摘要:策略模式 ThreadPoolExecutor的RejectedExecutionHandler,实现不同的拒绝策略。 装饰者模式 BufferedInputStream对InputStream扩展buffer功能。 工厂模式 Executors作为工厂,提供各种ExecutorService。 命
阅读全文
摘要:es使用netty来通信,实现分布式的功能,但在某些场景会oom。 1:netty概述IO 多路复用NioEventLoop.run select由jdk实现在win下使用select,在linux下使用epoll。linux下也可以使用netty实现的epoll:EpollEventLoop。 线
阅读全文
摘要:本文以TermQuery,GlobalOrdinalsStringTermsAggregator为例,通过代码,分析es,lucene搜索及聚合流程。1:协调节点收到请求后,将search任务发到相关的各个shard。 相关代码: TransportSearchAction.executeSearc
阅读全文
摘要:doc_values 按列存储,按docId排序,在query阶段使用,直接根据docId获取具体field的value,用来排序,聚合等。 stored field按文档存储,按docId排序,一条文档所有的stored field都存在一起,在fetch阶段使用。 https://www.ela
阅读全文
摘要:snapshot可以将es整个集群,具体索引数据备份到磁盘,hdfs等。需要时,可以从磁盘,hdfs恢复数据到es。 具体参考: https://elasticsearch.cn/article/6194 https://www.elastic.co/guide/en/elasticsearch/r
阅读全文
摘要:不使用es-hadoop的saveToES,与scala版本冲突问题太多。不使用bulkprocessor,异步提交,es容易oom,速度反而不快。使用BulkRequestBuilder同步提交。 主要代码 ESClient:
阅读全文
摘要:setFloorSegmentMB多少MB一个层级,在此区间的segment分为一个floor。 setMaxMergeAtOnce一次merge多少个segment。 setSegmentsPerTier每个floor允许有多少个segment,超过该值将进行merge。
阅读全文
摘要:硬件概述:cpu:24,内存:20g,磁盘:10*2.7T。 写入性能:(不对ip进行添加geo信息)。 写入性能对比 速度 Commit耗时(秒) 500*1000条 Bulk耗时(秒) 1000条dns Bulk耗时(秒) 1000条tcpflow Bulk耗时(秒) 1000条weblog C
阅读全文
摘要:写入对比每个路径下都只能有一个IndexWriter负责写入,通过writer.lock实现。不同:lucene可以多个线程共享一个IndexWriter,每个线程负责写一个segment,从addDocument到index都用es bulk线程。详见:https://www.cnblogs.co
阅读全文
摘要:breaker的估算,是根据语句以及上层的结果数,加上固定的值,不准确。 cache.size是cache到结果的size,准确。 所以,配置breaker不能拦截占用内存的聚合查询,而配置cache.size可以限制cache占用的内存。 keyword,ip等类型的聚合也会占用fielddata
阅读全文
摘要:别挂master节点。 稳定性:独立的master节点, 独立的协调节点 > master兼职协调节点 > master兼职数据节点 > master 兼职协调 + 数据节点。 clusterstate,fetchdata。
阅读全文
摘要:1:es2 fetch shard data时,存在节点刚加入集群,还没有收到cluster metadata的情况。此时,节点因为没有该索引,返回的sharddata为empty,主节点缓存了该sharddata,且不再fetch。修改:不缓存empty的sharddata。es5中节点没有收到c
阅读全文
摘要:shrink将分片数按因子缩减。hard link segment文件。因缩减前后hash一致,不需要rehash。如:0 ,1 , 2, 3, 4, 5, 6, 7, 8。9个分片缩减成3个:0 [0, 3, 6], 1 [1,4, 7],2 [2,5, 8]。 split将分片按因子扩张。har
阅读全文
摘要:本文主要分析es lucene写入流程,lucene segment的产生,flush, commit与es的refresh,flush。 1 segment的产生 当索引一个文档时,如果存在空闲的segment(未被其他线程锁定),则取出空闲segment list中的最后一个segment(LI
阅读全文

浙公网安备 33010602011771号