Elasticsearch-Base

用户头像
lee
关注
发布于: 2020 年 06 月 05 日
Elasticsearch-Base

Feature

  • 分布式搜索引擎

  • 近实时分析引擎

  • 性能很高

  • 容易扩展

Plan

  • 入门和深入

  • 集群管理

  • ELK 进行大数据分析

  • 实战和总结

Basic Concepts

Near Realtime(NRT)

es 是一个近实时的检索平台, 从建立索引到可搜索大约只需要 1s 钟, 具有非常低的延迟.

Cluster

  • 高可用

  • 可扩展性

一个集群由一个或者多个 node组成. 用于保存全部的数据, 提供联合索引和搜索功能, 一个集群在创建后必须拥有一个唯一的名字, 默认是 elasticsearch, node 都是通过这名字来加入到指定的集群中去的.

Node

一个 node是一个集群的的一个单独的服务, 用于存储数据和提供索引和搜索的功能, 和 cluster 一样, 每个 node 也要有自己的唯一的名字, 默认是一个 uuid, 也可以自定义 node 名称. node 是通过配置加入到指定的集群中去. 默认每个节点会被加入到 elsaticsearch 集群中.

Index

是 document 的容器, 一类相似文档的结合, 每个索引都有自己的 mapping, 用于定义包含文档的字段名和类型. 索引中的数据分散在 Shard 上. 索引的 settings定义了不同数据的分布方式.

Type

6.0 开始被废除.

Document



  • es 是面向文档的. 文档是可搜索数据的最小单位, 类似于关系型数据库表中的一条记录,

  • 在 es 中每个文档会被序列化为 json 格式存储, json 对象由字段组成, 字段有不同的类型(字符串, 数值, 布尔, 日期...)

  • 每个文档都有一个 unique ID, 类似于 Mysql 中的主键, 可以事 es 自动生成, 也可以自己指定.

  • 元数据

  • _index 文档所属的索引名称

  • _type 文档所属的类型名

  • _id 文档唯一 id

  • _source 文档的原始 json 数据

  • _version 文档的版本信息

  • _score: 相关性打分

Shards & Replicas

  • 主分片, 用于解决水平扩展问题, 通过主分片可以将数据分布到集群内的所有节点之上

  • 一个分片是一个运行的 lucene 实例

  • 主分片数量在索引创建时指定, 后续不允许修改, 除非 reIndex

  • 副本, 用于解决数据高可用问题

  • 副分片数量可以动态调整.

  • 增加副本数量可以提供服务的可用性.



ES Installation

  1. 下载 https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.1-darwin-x86_64.tar.gz

  2. unzip

  3. 执行命令bin/elasticsearch

  4. 查看启动结果 http://localhost:9200

  5. 以集群的方式运行

```bash
bin/elasticsearch -E node.name=node0 -E cluster.name=demo_cluster -E path.data=node0_data -d
bin/elasticsearch -E node.name=node1 -E cluster.name=demo_cluster -E path.data=node1_data -d
bin/elasticsearch -E node.name=node2 -E cluster.name=demo_cluster -E path.data=node2_data -d
bin/elasticsearch -E node.name=node3 -E cluster.name=demo_cluster -E path.data=node3_data -d
```
  1. 查看启动节点 http://localhost:9200/_cat/nodes

plugins

  1. 安装分词器

bin/elasticsearch-plugin install analysis-icu

  1. 查看已安装插件

bin/elasticsearch-plugin list

  1. 移除插件

bin/elasticsearch-plugin remove name

Kibana

Installation

  1. 下载: https://www.notion.so/Kibana-8a00cf3e796745c58767d50a81c2a289#e541b6b5392f4090835639fb4816a164

  2. unzip

  3. 配置 kibana.yml , 将 elasticsearch.host 指向刚刚启动的 es 服务地址.

  4. 执行 bin/kibana

  5. 查看 UI http://localhost:5601

  6. 插件: 处理方式同 ES

Logstash

installation

  1. 下载: https://www.notion.so/Logstash-25b669d719de4155b9256045a6f64b51#54a98626c4a34169a190ba505edd5aac

  2. unzip

  3. 配置 logstash.conf

input {
file {
path => "/Users/yiruan/dev/elk7/logstash-7.0.1/bin/movies.csv"
start_position => "beginning"
sincedb_path => "/dev/null"
}
}
filter {
csv {
separator => ","
columns => ["id","content","genre"]
}
mutate {
split => { "genre" => "|" }
remove_field => ["path", "host","@timestamp","message"]
}
mutate {
split => ["content", "("]
add_field => { "title" => "%{[content][0]}"}
add_field => { "year" => "%{[content][1]}"}
}
mutate {
convert => {
"year" => "integer"
}
strip => ["title"]
remove_field => ["path", "host","@timestamp","message","content"]
}
}
output {
elasticsearch {
hosts => "http://localhost:9200"
index => "movies"
document_id => "%{id}"
}
stdout {}
}
  1. 下载测试数据: movies.csv https://grouplens.org/datasets/movielens/

  2. 启动 bin/logstash -f logstash.conf

  3. 可以在 kibana中看到已经处理的movies的数据信息.

Cerebro

installation

  1. 下载: https://www.notion.so/Cerebro-397588ca1dea4f188e5500cba270e42c#54bfe403fdf647ab9a3f0351f09970e4

  2. uzip

  3. 启动: bin/cerebro

  4. 访问启动界面: 需要连接到我们之前启动的 ES 实例地址: http://localhost:9200 即可.



参考: https://github.com/geektime-geekbang/geektime-ELK

用户头像

lee

关注

just 2019.06.12 加入

just do it

评论

发布
暂无评论
Elasticsearch-Base