03 ELasticSearch介绍与安装

1 简介

Elastic官网

ElasticSearch具备以下特点:

  • 分布式,无需人工搭建集群(solr就需要人为配置,使用Zookeeper作为注册中心)
  • Restful风格,一切API都遵循Rest原则,容易上手
  • 近实时搜索,数据更新在ElasticSearch中几乎是完全同步的。
  • 实时分析的分布式搜索引擎。ElasticSearch的索引可以拆成多个分片,每个分片可以有零个多个副本。集群中的每个数据节点都可以承载一个或多个分片,并且协调和处理各种操作;
  • 高扩展性,可以扩展到上百台服务器,处理PB级别的结构化和非结构化数据。
  • 可插拔插件支持,ElasticSearch支持多种插件,比如分词插件,同步插件,hadoop插件,可视化插件。

2 安装

2.1 Mac安装

需要java环境:如何安装java自行google。

  1. 下载
    下载地址
    在这里插入图片描述

  2. 解压即可

  3. 目录介绍

    • bin:可执行命令文件
    • config:配置文件目录
    • data:数据你目录
    • lib:相关资源目录,里面核心就是lucene的包
    • plugins:插件目录
    • logs:日志
  4. 修改jvm参数
    打开config目录下的jvm.options文件,修改内容如下:

#-Xms1g  原先都是1g,如果你的电脑内存够大也就不用改了,嘿嘿
#-Xmx1g
# 改为下面的
-Xms128m
-Xmx256m
  1. 配置环境变量
sudo vi ~/.bash_profile

增加一下内容

# 换成自己的安装目录
export ES_HOME=/usr/local/soft/elasticsearch-7.2.0
export PATH=$PATH:$ES_HOME/bin

执行下面命令

source ~/.bash_profile
  1. 启动
➜  ~ elasticsearch

启动日志中:

 publish_address {127.0.0.1:9200}   

说明默认的端口号是9200

  1. 浏览器访问:127.0.0.1:9200
{
  "name" : "wangyaoyaodeMacBook-Pro.local",  # 主机名字
  "cluster_name" : "elasticsearch",  # 集群名字,默认elasticsearch,但是只部署了一个服务,说明elasticsearch自动就是集群,一个服务也是一个集群的概念
  "cluster_uuid" : "PdNmH9_bSMGRrLKyAR-fwg",
  "version" : {   版本信息
    "number" : "7.2.0",   
    "build_flavor" : "default",
    "build_type" : "tar",
    "build_hash" : "508c38a",
    "build_date" : "2019-06-20T15:54:18.811730Z",
    "build_snapshot" : false,
    "lucene_version" : "8.0.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
  1. 停止服务
    ctrl+c 。elsasticSearch默认是前台运行,日志输出在标准输出(stdout)

  2. 如何以守护线程运行
    使用-d参数,并且使用 -p参数将es的进程id记录在文件中,此时日志文件将在logs目录中找到

elasticsearch -d -p pid

在这里插入图片描述
多一个pid

此时退出es:根据pid文件

pkill -F pid

或者直接使用kill

kill 58203

3 elasticSearch的配置

配置文件的位置,config目录下

  • elasticsearch.yml : 配置elasticSearch
  • jvm.options: 配置elasticSearch依赖的jvm信息
  • log4j2.properties:elasticSearch的日志配置

3.1 elasticsearch.yml

属性名说明
cluster.name配置elasticsearch的集群名称,默认是elasticsearch。建议修改成一个有意义的名称。
node.name节点名,es会默认随机指定一个名字,建议指定一个有意义的名称,方便管理
path.conf设置配置文件的存储路径,tar或zip包安装默认在es根目录下的config文件夹,rpm安装默认在/etc/ elasticsearch
path.data设置索引数据的存储路径,默认是es根目录下的data文件夹,可以设置多个存储路径,用逗号隔开
path.logs设置日志文件的存储路径,默认是es根目录下的logs文件夹
path.plugins设置插件的存放路径,默认是es根目录下的plugins文件夹
bootstrap.memory_lock设置为true可以锁住ES使用的内存,避免内存进行swap
network.host设置bind_host和publish_host,设置为0.0.0.0允许外网访问
http.port设置对外服务的http端口,默认为9200。
transport.tcp.port集群结点之间通信端口
discovery.zen.ping.timeout设置ES自动发现节点连接超时的时间,默认为3秒,如果网络延迟高可设置大些
discovery.zen.minimum_master_nodes主结点数量的最少值 ,此值的公式为:(master_eligible_nodes / 2) + 1 ,比如:有3个符合要求的主结点,那么这里要设置为2

如果需要在配置文件中引用环境变量,则可以在配置文件中使用${key},引用环境变量

eg:

node.name: ${HOSTNAME}

3.2 jvm.options

elasticSearch中,很少需要修改jvm的参数。一般来说最可能更改的就是堆的大小。默认情况下,最小堆空间和最大的堆空间elasticSearch的都是1GB,刚刚在安装的时候已经介绍过了。

3.3 安全配置(待研究。。。)

elasticSearch中,有些设置信息是敏感需要保密的,单纯依赖文件系统的权限来保护这些信息是不够的,因此需要配置安全维度信息。

elasticSearch中提供了一个密钥库和相应的密钥库工具来管理密钥库中的设置。在对密钥库所做的所有修改,都必须重启es之后才会生效。

安全设置就像elasticsearch.yml配置文件中的常规设置一样,需要在集群中的每个节点上指定。当前,所有的安全设置都是特定于节点的设置,每个节点都需要配置。

安全设置的常规操作有创建密钥库查看密钥库中的设置列表添加字符串设置添加文件设置删除密钥设置可重新加载的安全设置等。

3.3.1 创建密钥库(elasticsearch.keystore)

想要创建elasticsearch.keystore,需要使用create命令,如下所示:

elasticsearch-keystore create

将会创建elasticsearch.keystore文件在config目录下

3.3.2 查看密钥库中的设置列表
elasticsearch-keystore list
3.3.3 添加字符串设置

如果需要设置敏感的字符串,比如云插件的身份凭证数据,可以使用add命令添加,如下所示:

elasticsearch-keystore add the.setting.name.to.set

3.4 日志配置

elasticSearch使用log4j2来记录日志。
elasticSearch公开了三个属性,用户可以在配置文件中引用这些属性来确定日志文件的位置

  • ${sys:es.logs.base_path}
  • ${sys:es.logs.cluster_name}
  • ${sys:es.logs.node_name}

比如配置文件(elasticsearch.yml)中的path.logs设置为/var/log/elasticsearchcluster.name设置为production,那么sys:es.logs.base_path将解析为/var/log/elasticsearch${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}.log将被解析为/var/log/elasticsearch/production.log

3.4.1 介绍一下一些配置项含义
######## Server JSON ############################
appender.rolling.type = RollingFile # 配置RollingFile的appender属性
appender.rolling.name = rolling  
appender.rolling.fileName = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}_server.json #  日志文件输出的位置和文件名字
appender.rolling.layout.type = ESJsonLayout # 使用json格式
appender.rolling.layout.type_name = server # type_name填充ESJsonLayout的类型字段的标志,该字段可以让我们在解析不同类型的日志时更加简单

appender.rolling.filePattern = ${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-%d{yyyy-MM-dd}-%i.json.gz # 将日志滚动输出到${sys:es.logs.base_path}${sys:file.separator}${sys:es.logs.cluster_name}-yyyy-MM-dd-i.json文件。日志文件会被压缩处理,i递增。
appender.rolling.policies.type = Policies
appender.rolling.policies.time.type = TimeBasedTriggeringPolicy # 使用基于时间戳的新增日志滚动策略
appender.rolling.policies.time.interval = 1 # 按天滚动新增日志
appender.rolling.policies.time.modulate = true
appender.rolling.policies.size.type = SizeBasedTriggeringPolicy # 按照日志大小策略来滚动新增日志一次
appender.rolling.policies.size.size = 128MB # 每生成128m的日志文件,就滚动新增日志一次
appender.rolling.strategy.type = DefaultRolloverStrategy
appender.rolling.strategy.fileIndex = nomax
appender.rolling.strategy.action.type = Delete # 每次新增时执行删除日志文件动作
appender.rolling.strategy.action.basepath = ${sys:es.logs.base_path}
appender.rolling.strategy.action.condition.type = IfFileName # 仅当文件名字匹配时才删除文件
appender.rolling.strategy.action.condition.glob = ${sys:es.logs.cluster_name}-*
appender.rolling.strategy.action.condition.nested_condition.type = IfAccumulatedFileSize # 只有当日志文件目录下积累了较多文件时才删除
appender.rolling.strategy.action.condition.nested_condition.exceeds = 2GB  # 压缩日志文件的条件是日志文件大小达到2GB
################################################
3.4.2 修改日志级别的四种方式
  1. 命令行,启动时候通过-e指定
elasticsearch -e logger.org.elasticsearch.transport=trace

适用场景:
当单节点上临时调试一个问题的时候比较适合。

  1. elasticsearch.yml 配置
logger.org.elasticsearch.transport: trace
  1. 通过集群配置
PUT /_cluster/settings

{
	"transient":{
		"logger.org.elasticsearch.transport": "trace"
	}
}

适用于调整整个集群的配置

  1. 通过log4j2.properties
logger.transport.name=org.elasticsearch.transport
logger..transport.level=trace
3.4.3 deprecation 日志

除了常规日志记录外,es还允许用户启用不推荐操作的日志记录。如果用户需要迁移某些功能,则可以提前确定这部分属性的配置

默认情况下,启动警告级别日志后,所有禁用日志均可输出到控制台和日志文件中。具体配置如下:

logger..deprecation.level=warn

配置生效后,将在日志目录中创建每日滚动deprecation日志文件。用户需要定期检查此文件,尤其是准备升级到新的主要版本时。

默认日志记录配置已将取消deprecation日志滚动策略设置为1GB后滚动和压缩。并且最多保留5个日志文件(四个滚动日志和活动日志)

用户可以在log4j2.properties中通过取消deprecation日志级别设置为error来禁用他

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值