云原生 | 32Docker运行数据采集和分析引擎Elasticsearch
Posted 小鹏linux
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生 | 32Docker运行数据采集和分析引擎Elasticsearch相关的知识,希望对你有一定的参考价值。
作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
Elasticsearch是一个基于Lucene的开源搜索服务器,主要基于Java实现。它提供了一个分布式的,多租户的全文搜索引擎,内含RESTful web接口。 Elasticsearch提供了实时的分布式数据存储和分析查询功能,很容易扩展到上百台服务器,支持处理PB级结构化或非结构化数据。配合 Logstash、Kibana等组件,可以快速构建一套对日志消息的分析平台。 |
1. 关于 Elasticsearch
1.1 Elasticsearch是什么
Elasticsearch 是一个分布式的开源搜索和分析引擎,在 Apache Lucene 的基础上开发而成。 Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示, 一切都是灵活、有弹性的。而且,应用代码也不是必须用Java 书写才可以和Elasticsearc兼容,完全可以通过JSON 格式的HTTP 请求来进行索引、搜索和管理Elasticsearch 集群。 如果你已经听说过Lucene ,那么可能你也听说了Solr ,它也是开源的基于Lucene 的分布式搜索引擎,跟Elasticsearch有很多相似之处。 但是Solr 诞生于2004 年,而Elasticsearch诞生于2010,Elasticsearch凭借后发优势和更活跃的社区、更完备的生态系统,迅速反超Solr,成为搜索市场的第二代霸主。 |
1.2 Elasticsearch的核心概念
|
node.master=false
node.data=false
|
tribe:
one:
cluster.name: cluster_one
two:
cluster.name: cluster_two
因为Tribe Node要在Elasticsearch 7.0以后移除,所以不建议使用。
|
集群的状态有Green、Yellow和Red三种,如下所述:
|
2. Elasticsearch的优势有哪些?
|
3. Elasticsearch逻辑结构
Document
Elasticsearch 是面向文档的,这意味着索引和搜索数据的最小单位是文档。 一个文档通常是以JSON 的数据格式来表示的。例如,一项技术大会的活动可以通过如下文档表达: |
"name":"Elasticsearch创新大会",
"organizer":"冰河",
"location ":"中国, 北京,海定"
一个Document中有很多Field,一个Field就是一个数据字段。 文档可以是包含若干取值的一行。但是这样的比较不够精准,它们还是有所差别。一个区别是,和行有所不同,文档可以是层次型的。例如,位置可以包含地址和邮编: |
:,
:,
:
"address":,
"postcode":"310000"
一篇单独的文档也可以包含一组数值,例如: |
:,
:,
"member":[
"东方青苍",
"神女蒠芸",
"长珩仙君",
"丹音仙子"
]
Type
类型,是文档的逻辑容器,类似于表格是行的容器。在不同的类型中,最好放入不同结构的文档。 每个类型中字段(Field)的定义称为映射(Mapping)。例如, 一个人的姓名可以映射为string,年龄可以映射为int。 映射包含某个类型中当前索引的所有文档的所有字段,但是不是所有的文档必须要有所有的宇段。同样,如果一篇新近索引的文档拥有一个映射中尚不存在的字段, Elasticsearch 会自动地将新字段加入映射。为了添加这个字段Elasticsearch 不得不确定它是什么类型,于是Elasticsearch 会进行猜测。例如, 如果值是7,Elasticsearch 会假设字段是长整型。 这种新字段的自动检测也有缺点,因为Elasticsearch 可能猜得不对。例如,在索引了值7之后,你可能想再索引hello world ,这时由于它是string 而不是long ,索引就会失败。对于线上环境,一般在索引数据之前,都会定义好所需的映射,不允许动态添加字段。 |
Index
索引,是类型的容器。一个Elasticsearch 索引非常像关系型世界的数据库,是独立的大量文档集合。每个索引存储在磁盘上的同组文件中,索引存储了所有映射类型的字段,还有一些设置。 |
4. 在Docker中部署运行Elasticsearch
可以使用官方镜像,快速运行Elasticsearch容器: |
$ docker run -d elasticsearch
937c1cb21b39a322ab6c5697e31af22a5329f08408d40f64e27465fed6597e34
也可以在启动时传入一些额外的配置参数: |
$ docker run -d elasticsearch elasticsearch -Des.node.name="TestNode"
2c0ae96f73ca01779c60f7c6103481696c34c510266f5c503610a2640dc6f50a
目前使用的镜像内含默认配置文件,包含了预先定义好的默认配置。如果用户要使用自定义配置,可以使用数据卷,挂载自定义配置文件 至/usr/share/elasticsearch/config: |
$ docker run -d -v "$PWD/config":/usr/share/elasticsearch/config elasticsearch
43333bfdbbfe156512ba9786577ca807c676f9a767353222c106453020ac7020
如果需要数据持久化,可以使用数据卷指令,挂载至/usr/share/elasticsearch/data: |
$ docker run -d -v "$PWD/esdata":/usr/share/elasticsearch/data elasticsearch
3feddf6a8454534b209b32df06c2d65022d772a8f511593371218f6bd064e80e
此镜像会暴露9200 9300两个默认的HTTP端口,可以通过此端口进行服务访问。9200端口是对外提供服务的API使用的端口。9300端口是内部通信端口,这些通信包括心跳,集群内部信息同步。 |
👑👑👑结束语👑👑👑
以上是关于云原生 | 32Docker运行数据采集和分析引擎Elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章
云原生之Docker实战使用docker部署Superset数据分析与可视化平台
云原生之Docker实战使用docker部署 Searxng个人搜索引擎平台