elasticsearch安装与配置(1)

在这里插入图片描述

目录含义如下:

| 文件/文件夹 | 作用 |

| :-- | :-- |

| bin | 可执行文件存放目录,例如启动文件 |

| config | 配置文件存放目录 |

| data | 数据存储目录 |

| lib | 第三方依赖库 |

| logs | 运行日志输出目录 |

| modules | 依赖模块目录 |

| plugins | 插件目录 |

| LICENSE.txt | LICENSE声明文件 |

| NOTICE.txt | 版权声明文件 |

| README.textile | 框架介绍信息 |

配置介绍


在config目录下,主要有如下配置文件:

  • elasticsearch.keystore

  • jvm.options

  • role_mapping.yml

  • users

  • elasticsearch.yml

  • log4j2.properties

  • roles.yml

  • users_roles

其中,我们经常涉及到的有三个,elasticsearch.yml、log4j2.properties以及jvm.options,其中,elasticsearch.yml是elasticsearch的基本配置文件,log4j2是日志输出配置文件,jvm则是jvm基本参数配置。这里主要来看看elasticsearch.yml配置文件,如下:

======================== Elasticsearch Configuration =========================

NOTE: Elasticsearch comes with reasonable defaults for most settings.

Before you set out to tweak and tune the configuration, make sure you

understand what are you trying to accomplish and the consequences.

The primary way of configuring a node is via this file. This template lists

the most important settings you may want to configure for a production cluster.

Please consult the documentation for further information on configuration options:

https://www.elastic.co/guide/en/elasticsearch/reference/index.html

---------------------------------- 集群配置 -----------------------------------

Use a descriptive name for your cluster:

#配置集群名字,集群名字默认为elasticsearch,

#elasticsearch会自动发现在同一网段下的elasticsearch节点。

#读者在第一次启动elasticsearch时,在浏览器中输入http://localhost:9200,

#在返回的数据中,就有集群名字,默认即为elasticsearch。

#cluster.name: my-application

------------------------------------ 节点配置 ------------------------------------

Use a descriptive name for the node:

#配置节点名称

#node.name: node-1

Add custom attributes to the node:

#给节点添加自定义属性

#node.attr.rack: r1

----------------------------------- 路径配置 ------------------------------------

Path to directory where to store the data (separate multiple locations by comma):

#数据存放目录,默认是elasticsearch下的data目录,可以指定多个目录,用,隔开,如:

#path.data:/path/data1,/path/data2

#path.data: /path/to/data

Path to log files:

#日志存放目录,默认为elasticsearch下的logs目录

#path.logs: /path/to/logs

----------------------------------- 内存配置 -----------------------------------

Lock the memory on startup:

#配置是否锁住内存。当jvm开始swapping时,elasticsearch的效率降低,为了避免这种情况,可以设置为true。

#bootstrap.memory_lock: true

Make sure that the heap size is set to about half the memory available

on the system and that the owner of the process is allowed to use this

limit.

Elasticsearch performs poorly when the system is swapping the memory.

---------------------------------- 网络配置 -----------------------------------

Set the bind address to a specific IP (IPv4 or IPv6):

#设置绑定的ip地址

#network.host: 192.168.0.1

Set a custom port for HTTP:

#配置对外提供服务的http端口号

#http.port: 9200

For more information, consult the network module documentation.

--------------------------------- 集群节点发现参数 ----------------------------------

Pass an initial list of hosts to perform discovery when new node is started:

The default list of hosts is [“127.0.0.1”, “[::1]”]

#设置集群中master节点的初始列表,通过这个配置可以发现新加入的集群的节点。

#discovery.zen.ping.unicast.hosts: [“host1”, “host2”]

Prevent the “split brain” by configuring the majority of nodes (total number of master-eligible nodes / 2 + 1):

#保证集群中的节点可以知道其他n个有master资格的节点,防止出现split brain,默认为1

#discovery.zen.minimum_master_nodes:

For more information, consult the zen discovery module documentation.

---------------------------------- Gateway -----------------------------------

Block initial recovery after a full cluster restart until N nodes are started:

#当n个节点启动后,再开始集群的恢复

#gateway.recover_after_nodes: 3

For more information, consult the gateway module documentation.

---------------------------------- Various -----------------------------------

Require explicit names when deleting indices:

#action.destructive_requires_name: true

当然这里只是最基本的配置,更多配置读者可以参考官方文档。

核心概念

===============================================================

Elasticsearch安装成功后,在正式启动之前,还需要读者了解Elasticsearch中几个核心概念,掌握这些核心概念,有助于读者更好的理解Elasticsearch。

NRT


Elasticsearch是一个接近实时(near real time)的搜索平台,也就是说,从你建立索引,到这个索引可以被搜索只需要很小的延迟,通常是1秒。

cluster


一个集群就是由一个或多个节点组织在一起, 这些节点共同持有全部的索引数据, 并共同提供索引和搜索功能。 一个集群由一个唯一的名字标识(默认就是“elasticsearch”,在上文启动过程中,也像读者展示了如何自定义集群名称)。 这个名字很重要, 因为一个节点只能通过指定某个集群的名字,来加入这个集群。在生产环境中显式地设定这个名字是一个好习惯,但是使用默认值来进行测试/开发也是不错的。开发者需要确认不要使用相同的集群名字,以避免节点加入到错误的集群。需要注意的是,一个集群中只包含一个节点是合法的。另外,你也可以拥有多个集群,集群以名字区分。

node


一个节点就是集群中的一个服务,作为集群的一部分,它可以用来存储数据,参与集群的索引和搜索功能。和集群类似,一个节点也是由一个名字来标识的,默认情况下,这个名字是一个随机的Universally Unique IDentifier (UUID),这个名字会在节点启动时分配给节点。这个名字对于节点管理工作来说很重要,因为开发者需要确定网络中的哪些服务对应于Elasticsearch集群中的哪些节点。

一个节点可以通过配置集群名称的方式来加入一个指定的集群。 默认情况下,每个节点都会被加入到一个叫做“elasticsearch”的集群中,这意味着,如果开发者启动了多个节点, 并且这些节点能够相互发现彼此,那么这些节点会自动加入到一个叫做“elasticsearch”的集群中。

在一个集群里可以拥有任意多个节点。而且,如果当前网络中没有运行任何节点,这时启动一个节点,会默认创建并加入一个叫做“elasticsearch”的单节点集群。

index


一个索引就是一个拥有相似特征的文档的集合。例如,客户数据可以建立一个索引,产品目录可以建立一个索引,订单数据可以建立一个索引。一个索引由一个名字来标识(必须全部是小写字母的),并且当我们要对这个索引中的文档进行索引、搜索、更新和删除的时候,都要使用到这个名字。在一个集群中,可以创建任意多个索引。

type


在一个索引中,你可以定义一种或多种类型。一个类型是你的索引的一个逻辑上的分类/分区,其语义完全由你来定。通常,会为具有一组相同字段的文档定义一个类型。比如说,我们假设你运营一个博客平台 并且将你所有的数据存储到一个索引中。在这个索引中,你可以为用户数据定义一个类型,为博客数据定义另一个类型,当然,也可以为评论数据定义另一个类型。

注意:这是一个即将过期的概念,在Elasticsearch 6.0.0或更高版本中创建的索引只包含单个映射类型(type)。在具有多种映射类型的5.x中创建的索引将继续像以前一样在Elasticsearch 6.x中运行。映射类型将在Elasticsearch7.0.0中完全删除。

许多人喜欢将index比喻为关系型数据库中的database,将type比喻为关系型数据库中的table,实际上这个比喻非常不贴切。因为在关系型数据库中,表中的字段都是独立的,但是在Elasticsearch中,在不同的type中,如果filed具有相同的名字,则这些不同的filed实际上是由相同的Lucene Filed提供支持的,因此这种比喻并不恰当;另一方面,在同一索引中存储具有很少或没有共同字段的不同实体会干扰Lucene有效压缩文档的能力。

document


一个文档是一个可被索引的基础信息单元。例如,某一个客户的文档、某一个产品的一个文档、某个订单的一个文档。文档以JSON格式来表示。在一个index/type里面,可以存储任意多的文档。

shards and replicas


一个索引可以存储超出单个节点硬件限制的大量数据。例如,一个具有10亿文档的索引占据1TB的磁盘空间,而任一节点可能没有这样大的磁盘空间来存储或者单个节点处理搜索请求,响应会太慢。

为了解决这个问题,Elasticsearch提供了将索引划分成多片的能力,这些片叫做分片。当用户创建一个索引的时候,可以指定分片的数量(默为5,但是在7.0版本中默认会变为1)。每个分片本身也是一个功能完善并且独立的“索引”,这个“索引” 可以被放置到集群中的任何节点上。

分片之所以重要,主要有两方面的原因:

  • 允许水平分割/扩展内容容量

  • 允许在分片(位于多个节点上)之上进行分布式的、并行的操作,进而提高性能/吞吐量

至于一个分片怎样分布,它的文档怎样聚合回搜索请求,是完全由Elasticsearch管理的,对于用户来说,这些都是透明的。在一个网络/云的环境里,失败随时都可能发生。在某个分片/节点因为某些原因处于离线状态或者消失的情况下,故障转移机制是非常有用且强烈推荐的。为此, Elasticsearch允许创建分片的一份或多份拷贝,这些拷贝叫做复制分片,或者直接叫复制。

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
7E-1715670794995)]

[外链图片转存中…(img-ATQ9VPs5-1715670794996)]

[外链图片转存中…(img-CJkCgyXa-1715670794996)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值