Elasticsearch学习心得

ES是应用于大数据的搜索引擎。

特点:

快:Pb级别数据秒内响应

准:ES在旧版本中使用一种叫TF/IDF的评分算法作为默认的评分算法,从 7.x 之后,默认改为BM25评分算法

ES中,快怎么保证:

1、首先进行分词

2、倒排索引

倒排索引(fft)的原理(全文检索):

1、倒排索引由倒排表(posting list)、term dictionary(分词)、term index(分词编号)

其中倒排表是一个int数组,记录分词命中的条的id。分词无重复。

2、只需要一次查询就能得到含有次词频的所有列的id

倒排索引和正排索引的区别,倒排索引是一个词频有哪些条,正排索引是指一条有哪些词频

ES写入原理:

写入过程:

1、客户端发起写入请求

2、Memory Buffer 空间阈值、时间阈值(1s),每隔1秒创建Segment文件(倒排索引)并清空(refresh操作)

3、segment立马写入OS Cache,OS Cache响应将segment置为open

4、写入OS磁盘空间阈值、时间阈值(30分钟?)

Segment会定期进行merge的操作

OS Cache响应将segment置为open之后就可以查询了。

因为写入磁盘之前数据可能丢失,通过Translog保证数组完整性。

segment过多可能导致oom。可以吧1s调大。这个时间决定写入之后多久能查出来。

写入一致性策略:

由wait_for_active_shards 参数控制。默认值为1,一个节点写入成功就通知客户端。

ES调优

1、写入遵从低频高量原则,将Segment时间阈值调大(refresh_interval)、将Buffer阈值调大,减少segment数量从而减少merge次数。避免oom。  

2、关闭副本,当写入大量数据过程中关闭副本,暂停搜索服务,或选在请求量谷值时间完成。(写入一致性策略会各个节点同步,消耗带宽)

3、禁用swap

4、设置 max_result_window参数,防止深度分页次数过多,保护JVM防止oom出现。这个参数设置要根据系统性能决定。

你可能感兴趣的:(elasticsearch,大数据)