优化ElasticSearch写入效率

最近在做日志搜集系统,涉及到Kafka到ES的数据解析写入,但是Kafka的写入效率远远高于ES,造成大量的数据在Kafka中积累,且ES的数据更新非常缓慢,最终造成了在Kibana中查询的时候发现,ES中的数据有接近9个小时的数据延迟,这显然是不可接受的。因此,必须着手优化ES的写入效率。在尽可能不改变已有配置的情况下,写入效率优先可以考虑以下两点。

必须使用bulk方式提交写入数据

一开始我们的解析器是通过单条数据的形式提交的数据,很明显这种方式在大数据量的时候就越来越慢,因此我们必须修改为批量提交的方式。ES的bulk提交有个限制就是一次性提交的数据量不能超过15MB,因此,在考虑一次性提交多少条数据比较合适的时候,这个参数无比重要。根据分析,我们目前的数据量一次性bulk提交5000条数据比较合适,约为5-6MB的样子。当然不是越多越好,也不是满满地一定要达到15MB的限制,那样的风险太大,对于我们来讲,能够提升速率满足需求即可。并且我们的程序优化过后能够满足随时根据参数调整bulk请求数量的消息数量大小。我们的k8s中对应的容器配置是这样的:

Continue reading “优化ElasticSearch写入效率”

全文搜索引擎 Elasticsearch 教程

全文搜索属于最常见的需求,开源的 Elasticsearch (以下简称 Elastic)是目前全文搜索引擎的首选。

它可以快速地储存、搜索和分析海量数据。维基百科、Stack Overflow、Github 都采用它。

Elastic 的底层是开源库 Lucene。但是,你没法直接用 Lucene,必须自己写代码去调用它的接口。Elastic 是 Lucene 的封装,提供了 REST API 的操作接口,开箱即用。

本文从零开始,讲解如何使用 Elastic 搭建自己的全文搜索引擎。每一步都有详细的说明,大家跟着做就能学会。 Continue reading “全文搜索引擎 Elasticsearch 教程”

使用docker安装kibana

使用dockerhub镜像运行:

其中指定的ES地址为docker虚拟IP地址,172.17.0.1为宿主docker虚拟IP地址,当然也可以指定对应ES容器的IP地址。

随后打开 http://127.0.0.1:5061/ ,可以看到kibana界面。 Continue reading “使用docker安装kibana”

使用docker安装ElasticSearch

方案一:使用dockerhub镜像

成功后访问:http://127.0.0.1:9200,该镜像默认不需要任何账号密码验证。

方案二:使用elastic镜像

具体请参考官方网站手册:https://www.elastic.co/guide/en/elasticsearch/reference/5.0/docker.html

开发环境可以通过以下命令执行ES:

成功后访问:http://127.0.0.1:9200,默认账号密码:elastic/changeme

Continue reading “使用docker安装ElasticSearch”