作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道第一名🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
目录
Elasticsearch是一个基于Lucene的开源搜索服务器,主要基于Java实现。它提供了一个分布式的,多租户的全文搜索引擎,内含RESTful web接口。
Elasticsearch提供了实时的分布式数据存储和分析查询功能,很容易扩展到上百台服务器,支持处理PB级结构化或非结构化数据。配合 Logstash、Kibana等组件,可以快速构建一套对日志消息的分析平台。
|
Elasticsearch 是一个分布式的开源搜索和分析引擎,在 Apache Lucene 的基础上开发而成。 Lucene 是开源的搜索引擎工具包,Elasticsearch 充分利用Lucene,并对其进行了扩展,使存储、索引、搜索都变得更快、更容易, 而最重要的是, 正如名字中的“ elastic ”所示, 一切都是灵活、有弹性的。而且,应用代码也不是必须用Java 书写才可以和Elasticsearc兼容,完全可以通过JSON 格式的HTTP 请求来进行索引、搜索和管理Elasticsearch 集群。 如果你已经听说过Lucene ,那么可能你也听说了Solr ,它也是开源的基于Lucene 的分布式搜索引擎,跟Elasticsearch有很多相似之处。 但是Solr 诞生于2004 年,而Elasticsearch诞生于2010,Elasticsearch凭借后发优势和更活跃的社区、更完备的生态系统,迅速反超Solr,成为搜索市场的第二代霸主。 |
|
- 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三种,如下所述:
|
|
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 索引非常像关系型世界的数据库,是独立的大量文档集合。每个索引存储在磁盘上的同组文件中,索引存储了所有映射类型的字段,还有一些设置。 |
可以使用官方镜像,快速运行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端口是内部通信端口,这些通信包括心跳,集群内部信息同步。
|