文章目录
1. Elasticsearch可以用来解决什么问题?
参考:Elasticsearch官方描述
Elasticsearch是一个分布式的搜索和分析引擎,是Elastic技术栈的心脏。Logstash和Beats使得在收集、聚合、数据的再加工、以及将数据存储至Elasticsearch变得更加容易。通过Kibana ,我们可以交互式的探索ElasticSearch中的数据、可视化展示,从而使得我们能够更加深刻的理解我们的数据。
不管是结构化数据还是非结构化数据,数值数据以及地理位置数据,Elasticsearch都可以高效的索引它们,并且提供近实时的搜索。你可以通过检索和聚合数据从而发现数据的规律和趋势,随着数据量以及查询量的增长,Elasticsearch的分布式特性可以允许你无缝的增加部署。
通过Elasticsearch,你可以:
- 为你的应用添加一个搜素框
- 存储和分析日志、指标和安全事件数据
- 通过机器学习来实时为数据自动建模
- 使用Elasticsearch作为存储引擎来自动化业务工作流
- 使用Elasticsearch作为地理信息系统(GIS)管理、集成和分析空间信息
- 利用弹性搜索作为生物信息学研究工具对遗传数据进行存储和处理
2. 安装Elasticsearch
2.1. windows平台
首先下载Ealsticsearch安装包,然后解压,进入bin目录,双击elasticsearch.bat文件即开始了Elasticsearch的启动。
2.2. mac平台
mac平台可以使用brew的方式安装,也可以使用下面的安装方式,使用下面的方式安装的时候,特别注意:不能使用root用户安装。
第一步:下载Elasticsearch安装包
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.3.2-linux-x86_64.tar.gz
第二步:解压
tar -xzf elasticsearch-7.3.2-darwin-x86_64.tar.gz
第三步:进入Elasticsearch家目录,执行启动脚本
cd elasticsearch-7.3.2/
./bin/elasticsearch
2.3 是否启动成功?
对于windows,打开浏览器,在地址栏数据localhost:9200
;对于linux,则在终端输入curl localhost:9200
,然后回车,如果看到类似以下的输出,则表示安装成功:
{
"name" : "PS20190505ZWEN",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "4luVFuhcQ3iF_NJk3aQhNA",
"version" : {
"number" : "7.3.2",
"build_flavor" : "default",
"build_type" : "zip",
"build_hash" : "1c1faf1",
"build_date" : "2019-09-06T14:40:30.409026Z",
"build_snapshot" : false,
"lucene_version" : "8.1.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
3. 配置
3.1. 系统配置
参考:重要的系统配置
3.1.1 生产环境
理想情况下,一个Elasticsearch实例应该单独运行在一台机器上,并且尽可能把系统所有的资源都给到运行Elasticsearch实例的用户,你应该修改操作系统的配置来达到上述要求,因为默认情况下,一个非root用户拥有的系统资源不是很多,在真正上生产的时候,以下设置必须要考虑:
- 禁用swap
- 增加文件描述符
- 保证操作系统有足够的虚拟内存
- 保证可以创建足够多的线程
- JVM缓存DNS配置
- 临时目录未挂载noexec
关于这些配置到底要怎么设置,建议最好阅读一下官方文档,或者请教专业的运维,当然,这里也有我曾经的一个skywalking使用Elasticsearch作为存储和搜索引擎的例子可以供你们参考,但是,特别要注意的是,我对操作系统知识的了解十分有限,不建议读者按照该例子来上生产环境。
3.1.2 开发环境VS生产环境
默认情况下,Elasticsearch会认为你在一个开发环境,因此如果以上(3.1.1)中的说明你没有设置,那么Elasticsearch节点依然能够正常启动,只不过会在日志中有一些警告。但是只要你设置了network.host
,那么Elasticsearch就会认为你处于生产环境,那么这些警告就会变为异常从而阻止Elasticsearch节点的正常启动,
3.2. Elasticsearch配置
Elasticsearch主要有3个配置文件,这些配置文件都位于Elasticsearch家目录的config目录下:
- elasticsearch.yml:Elasticsearch配置
- jvm.options:Ealsticsearch的java virtual machine配置
- log4j2.properties: Elasticsearch的日志配置
举个例子,Elasticsearch默认的java虚拟机堆内存大小是1G,如果要修改为2G,则打开es_home/config/jvm.options文件,将
-Xms1g
-Xmx1g
修改为:
-Xms2g
-Xmx2g
保存退出即可,更多详细细节可以阅读Setting JVM options。另外,堆内存大小最好设置为物理机内存的一半,具体原因可参考Setting the heap size。