安装
下载地址
ElasticSearch: https://mirrors.huaweicloud.com/elasticsearch/?C=N&O=D
logstash: https://mirrors.huaweicloud.com/logstash/?C=N&O=D
kibana: https://mirrors.huaweicloud.com/kibana/?C=N&O=D
elasticsearch-analysis-ik: https://github.com/medcl/elasticsearch-analysis-ik/releases
cerebro: https://github.com/lmenezes/cerebro/releases
elasticsearch-head: https://github.com/mobz/elasticsearch-head
单节点安装
官网下载: https://www.elastic.co/cn/elasticsearch/
将下载的文件解压,解压后的目录含义如下:
启动方式:
进入到 bin 目录下,直接执行 ./elasticsearch 启动即可。
看到 started 表示启动成功。
默认监听的端口是 9200,所以浏览器直接输入 localhost:9200 可以查看节点信息。
配置集群名称以及节点名称:
打开 config/elasticsearch.yml 文件,可以配置集群名称以及节点名称。配置方式如下:
cluster.name: yq-es-cluster
node.name: master-yq
HEAD 插件安装
Elasticsearch-head 插件,可以通过可视化的方式查看集群信息。
下载插件安装:
git clone git://github.com/mobz/elasticsearch-head.git
cd elasticsearch-head
npm install
npm run start
访问: http://127.0.0.1:9100/
连接测试发现,存在跨域问题,配置 es。
解决办法如下,修改 es 的 config/elasticsearch.yml 配置文件,添加如下内容,使之支持跨域:
http:
cors:
enabled : true
allow-origin : "*"
重启 es 服务器,然后再次连接。
分布式安装
一主二从,master 的端口是 9200,slave 端口分别是 9201 和 9202
1、首先修改 master 的 config/elasticsearch.yml 配置文件:
node.master: true
network.host: 127.0.0.1
重启 master。
2、将 es 的压缩包解压两份,分别命名为 elasticsearch-slave01 和 elasticsearch-slave02,代表两个从机,分别对其进行配置。
elasticsearch- slave01/config/elasticsearch.yml:
# 集群名称必须保持一致
cluster.name: yq-es-cluster
node.name: slave01
network.host: 127.0.0.1
http.port: 9201
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
elasticsearch-slave02/config/elasticsearch.yml:
# 集群名称必须保持一致
cluster.name: yq-es-cluster
node.name: slave02
network.host: 127.0.0.1
http.port: 9202
discovery.zen.ping.unicast.hosts: ["127.0.0.1"]
然后分别启动 elasticsearch-slave01 和 elasticsearch-slave02。
启动后,可以在 head 插件上查看集群信息。
安装 Kibana
Kibana 是一个 Elastic 公司推出的一个针对 es 的分析以及数据可视化平台,可以搜索、查看存放在 es 中的数据。
汉化,具体的配置文件是 config/kibana.yml
i18n.locale: "zh-CN"
执行 ./bin/kibana 文件启动
localhost:5601
ES 核心概念
全文检索
- 通过一个程序扫描文本中的每一个单词,针对单词建立索引,并保存该单词在文本中的位置、以及出现的次数。
- 用户查询时,通过之前建立好的索引来查询,将索引中单词对应的文本位置、出现的次数返回给用户,因为有了具体文本的位置,所以就可以将具体内容读取出来了。
倒排索引
ES VS 关系型数据库
ES 是面向文档的,一切都是JSON。
ES(集群)中可以包含多个索引(数据库),每个索引中可以包含多个类型(表),每个类型下又包含多个文档(行),每个文档中又包含多个字段(列)。
物理设计:
ES 在后台把每个索引划分成多个分片,每个分片可以在集群中的不同服务器间迁移。
逻辑设计:
一个索引类型中,包含多个文档,比如文档1,文档2。当我们索引一篇文档时,可以通过这样的一个顺序找到它:索引-》类型-》文档ID,通过这个组合我们就能索引到某个具体的文档。注意:ID不必是整数,实际上它是个字符串。