ElasticSearch 的写入机制,其实多人没整明白,尤其在大数据场景下,写入慢、堆积、甚至丢数据的问题,真的挺让人头大。
《ElasticSearch 写入原理及优化》这份文档,讲得还蛮细,算是把写入链路拆得比较清楚了。你能搞懂从index
求开始,到refresh
、flush
、merge
这一套流程,哪里耗时、哪里能动手脚。
像你用Flink
或者Logstash
批量写入时,常见的吞吐低,其实多时候是bulk size
没调好,或者是refresh 机制搞得太频繁。文档里有提这块的优化建议,还附了实践对比,蛮实用的。
顺带一提,作者也连了不少相关文章,有倒排索引
实现的 Java 代码,有Elasticsearch 深度分页
的,也有MySQL
和Oracle
的索引优化策略。你要是刚好在搞搜索系统,这一套真挺有参考价值。
建议你搭配Flink 写入 ES 对比文章一起看,前后逻辑就更清楚了。如果你最近写入性能有瓶颈,真的可以抽点时间看看。