Elasticsearch
Elasticsearch 是一个 高性能数据存储、搜索和分析引擎,它被用于 数据搜索引擎 实时流式分析 等场景。Elasticsearch 是一个分布式、免费和开放的搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化。

准备
在参阅本文档使用 Elasticsearch 时,需要确保如下几点:
- 
登录 Websoft9 控制台,然后找到(或安装)Elasticsearch: - 我的应用 菜单找到应用
- 应用商店 菜单部署应用
 
- 
应用是基于 Websoft9 安装的 
- 
应用的用途符合 elv2-sspl 开源许可协议 
- 
为应用准备配置访问方式:配置域名 或 服务器安全组开启网外端口 
入门指南
初始化
Websoft9 控制台安装 Elasticsearch 后,通过 "我的应用" 查看应用详情,在 "访问" 标签页中获取登录信息。
- 
使用本地电脑浏览器访问,进入 Elasticsearch API 认证提示 
- 
输入用户名(elastic)和密码,成功后会输出 API 基本信息 
获取 Enrollment Token
Enrollment Token 是用于 Kibana 除此连接的必要信息。可以在 Elasticsearch 中运行重置命令获取:
/usr/share/elasticsearch/bin/elasticsearch-create-enrollment-token -s kibana
使用 Kibana 管理
Elasticsearch 应用中默认不含 Kibana,用户可以通过 Websoft9 应用商店 安装 Kibana。
连接 Logstash 并分析
Logstash 是数据的采集、加工和传输管道,它是如何与 Elasticsearch 配套工作的呢?
- 
编辑 Logstash 配置文件 
- 
新增一个 pipeline 的配置文件(output 段需填写准确的 ES 账号),其内容如下: input{
 file{
 path => "/var/log/*.log"
 type => "elasticsearch"
 start_position => "beginning"
 }
 }
 ## Add your filters / logstash plugins configuration here
 output {
 elasticsearch {
 hosts => "elasticsearch:9200"
 user => "elastic"
 password => "elastic123"
 index => "mytest"
 }
 }
- 
运行命令 curl http://URL/cat/indices?v验证 Elasticsearch 和 Logstash 的连接,索引是否生效
- 
登陆 Kibana,点击Manage,创建一个Index Patterns 
- 
根据提示完成创建任务,最后用 时间戳 检索数据 
配置选项
- 默认管理员账号:elastic
- Elasticsearch API
- 多语言(✅):Kibana 配置文件中增加 i18n.locale: "zh-CN"
- 开源许可:ELASTIC-LICENSE
- SMTP(√)
管理维护
- 
Email 配置:Kibana 控制台,依次打开:Stack Management > Watcher ,增加一个 Email Action 
- 
重置密码:ElasticSearch 容器中运行命令 /usr/share/elasticsearch/bin/elasticsearch-reset-password -u elastic
- 
备份与恢复:Elastic 内置快照备份功能 
问题与故障
ERROR: exit code 137?
错误详情:ERROR: Elasticsearch exited unexpectedly, with exit code 137
问题原因:启动或运行时,服务器可分配给 ES 的内存不足
实践发现可用内存超过 1G 时,此 ERROR 还不会出现
Logstash 无法输出到 ES?
检查 Logstash 的 pipeline 配置文件中 Elasticsearch 账号密码是否正确
TOO_MANY_REQUESTS ... disk usage?
如果现实下面的错误信息,即表明磁盘空间不足。
kibana_task_manager_7.17.4_001/_mapping?timeout=60s error: [cluster_block_exception]: index [.kibana_task_manager_7.17.4_001] blocked by: [TOO_MANY_REQUESTS/12/disk usage exceeded flood-stage watermark, index has read-only-allow-delete block];,"}
ES 对磁盘空间有较高的要求,建议准备足够的空间。
Elastic 具体包含哪些应用?
“Elastic Stack” 是三个开源项目的缩写:Elasticsearch,Logstash 和 Kibana。
- Elasticsearch 是一个存储数据和检索数据等数据库
- Logstash 是数据提取、清洗和整理的中间件
- Kibana 是 Elasticsearch 的可视化管理分析界面,Kibana 依赖 Elasticsearch
另外,随着 Elastic 公司不断发展,他们把更多的产品加入到了 ELK 家族,例如:一个日志采集工具 Beats
下面是 Elastic Stack 用于日志场景的典型架构图

Elasticsearch 全部免费吗?
Elasticsearch 由之前的开源版+商业扩展包 xpack 组成。其中 xpack 基本功能免费,需要使用全部功能可以向官方申请 30 天的免费试用期,试用期结束后回归到基本功能或订阅。