第一部分主要介绍了ElasicSearch发展历程、基本概念、一些常用接口使用指南。总体而言跟官方文档差不多,未有原理性知识讲解。
什么是ElasticSearch
Elasticsearch 是一个分布式、RESTful 风格的搜索和数据分析引擎,能够解决不断涌现出的各种用例。
什么是 ELK ?
Elasticsearch + Logstash + Kibana(ELK)是一套开源的日志管理方案,可以使用它来搭建可视化的日志分析平台。
Logstash 是一个用于管理日志的工具,可以用它去收集日志、转换日志、解析日志并将他们作为数据提供给其它模块调用,例如将数据提供给 Elasticsearch 使用。
Kibana 也是一个开源和免费的数据可视化工具,可以为 ElasticSearch 提供友好的日志分析 Web 界面,可以帮助您汇总、分析和搜索重要数据日志。
beats 是一组轻量级采集程序的统称,由 go 语言开发,负责日志收集,并将将收集到的数据发送给 Logstash 或者 Elasticsearch。
Elasticsearch 的基础概念
集群(Cluster)
节点(Node)
索引(Index)
分片(Shard)
文档(Document)
分词器
Standard Analyzer:默认分词器,按词切换,小写处理
Simple Analyzer: 按照非字母切分,小写处理
Stop Analyzer: 小写处理,停用词过滤
Whitespace Analyzer:按照空格切分,不转换小写
Keyword Analyzer: 不分词,直接将输入当作输出
Patter Analyzer: 正则表达式分词
Language Analyzer:提供 30 多种常见语言的分词器
Customer Analyzer:自定义分词器
Mapping
主要用于定义索引的字段名称和数据类型以及倒排索引等相关配置,Mapping 可以系统自动推断生成,也可以由用户自己定义。
索引模板
Elasticsearch 不要求你在使用一个索引前创建它。 对于日志记录类应用,依赖于自动创建索引比手动创建要更加方便。
常用的 RestAPI
PUT {index_name}/_create/{id}:增加一条文档记录,必须保证对应 ID 的文档不存在
POST {index_name}/_update/{id}:不会删除原先文档,实现真正的数据更新,可以增加字段或者修改某些字段
PUT {index_name}/_doc/{id}:新增一条文档记录,如果记录已经存在,则删除原先文档,版本信息会加 1
POST {index_name}/_doc/:新增一条文档记录,ID 会自动生成
GET {index_name}/_doc/{id}:根据 ID 获取某一文档记录
DELETE {index_name}/_doc/{id}:根据删除一条文档
POST _bulk:文档的批量增删改
POST|GET /_search: 对集群中所有的索引进行搜索
POST|GET /index1,index2/_search:搜索索引 index1 和 index2
POST|GET /index*/_search: 搜索以 index 开头命名的索引
GET _cluster/health: 查看集群的健康状态
GET {index_name}: 查看对应索引的状态
GET {index_name}/_count:查看索引的文档总数
POST /_analyze: 使用某个分词器对文本进行分词
GET {index_name}/_mapping:查看 mapping 定义
DELETE {index_name}:删除索引
PUT {index_name}:修改 mapping 定义
PUT /_template/template_test:定义 Index Template