<p>---恢复内容开始---</p># ElasticSearch入坑指南之概述及安装html
了解ElasticSearch
ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎。使用ES能够实现近实时的存储、检索及海量数据的分析。node
ES能够应用于如下场景git
- 日志或交易记录的收集,分析,趋势挖掘等,如:ELK可视化日志查询解析系统..
- 站内搜索或商品数据检索,如:github,维基百科..
- 价格报警平台,如:商品价格低于XX时短信通知客户..
ES核心概念github
- Near Realtime (NRT近实时) 从索引一个文档开始至该文档被检索到有必定时间的延迟(默认为1s)
- Cluster(集群) 一个或多个节点的集合,他们一块儿存储数据而且提供全部节点联合索引及检索功能
- Node(节点) 节点是一个单独的服务器,是集群的一部分,存储数据并参与集群中的索引及检索功能
- Shards(分片) ES能够存储大量数据,可是当数据量特别大时,单个节点的服务请求会变的很慢,为解决此问题ES提供了将Index拆分到多个Shared的能力,每一个分片都是独立的全功能的索引,能够存储在集群中任意的节点上。 每一个 Elasticsearch 分片是一个 Lucene 索引。在单个 Lucene 索引中有一个最大的文档数量限制。从 LUCENE-5843 的时候开始,该限制为 2,147,483,519(=Interger.MAX_VALUE - 128)个文档。您可使用 _cat/shards api 来监控分片大小。 分片两个重要的理由:
- 水平拆分/拓展
- 经过分布式和跨Shared操做提高性能及吞吐
- Replicas(副本) 为实现单Node/Shared故障迁移功能,ES能够设置一个或多个Index的数据到副本Node/Shared中。副本是一个分片的精确复制,每一个分片能够有零个或多个副本。ES中能够有许多相同的分片,其中之一被选择更改索引操做,这种特殊的分片称为主分片。 当主分片丢失时,集群将副本提高为新的主分片。 副本很是重要的两个理由是 :
- 在 shard/node 故障的状况下提供了高可用性。为了达到这个目的,须要注意的是在原始的/主 Shard 被复制时副本的 Shard 不会被分配到相同的节点上。
- 它可让你水平扩展搜索量/吞吐量,由于搜索能够在全部的副本上并行执行。
- Index(索引) 具备类似特征的文档的集合,能够理解为关系型数据库中的Database(数据库),一般以小写命名
- Type(类型) 一个类型是一个索引中的逻辑分区,能够理解为关系型数据库中的Table(表),一个索引能够包含多个类型,6.X版本以后一个索引只能包含一个类型, 同一索引中的不一样Type类型的相同名称的属性不能有不一样类型,如:Index1中的Type1和Type2都有title字段,title字段不能在Type1中为int类型,在Type2中为string类型
- Document(文档) 索引信息的基本单位,以Json格式表示,能够理解为关系型数据库的Row(行),
- Mapping(映射) Mapping用于定义文档之间的关系(如:paren-child,join等),声明文档Field的类型,analyzer分词规则等,能够理解为关系型数据库中的表的定义或静态语言中的数据类型声明
ES相关概念与关系型数据库的对比数据库
<font> |关系型数据库|ElasticSearch| |--------|--------| |数据库Database|索引Index,支持全文索引| |表Table|类型Type| |数据行Row|文档Document,没有固定文档结构,不一样文档能够有不一样字段集合| |数据列Column|字段Field| |模式Schema|映射Mapping| </font> ---json
安装和配置vim
官方下载地址api
#下载ES文件至指定目录 wget -P Downloads https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.3.tar.gz #解压ES安装包至指定目录 tar -zxvf Downloads/elasticsearch-6.2.3.tar.gz -C /usr/local/app #打开ES安装目录 cd /usr/local/app/elasticsearch-6.2.3 #启动ES bin/elasticsearch #后台启动ES bin/elasticsearch -d
- 安装踩坑指南 can not run elasticsearch as root elasticsearch能够执行脚本文件,为了安全性,默认不容许使用root用户启动服务,须要新建立用户名和用户组启动服务。
#建立es用户组 groupadd esgroup #增长es用户并附加到es组 useradd esuser -g esgroup -p espassword #给予目录权限 chown -R esuser:esgroup /usr/local/app/elasticsearch-6.2.3 #切换为esuser用户 su esuser
max file descriptors [4096] for elasticsearch process likely too low, increase to at least [65536] max number of threads [1024] for user [lishang] likely too low, increase to at least [2048]安全
#切换为root用户 su root #修改配置文件 vi /etc/security/limits.d/90-nproc.conf #空白处添加如下内容 * soft nofile 65536 * hard nofile 131072 * soft nproc 2048 * hard nproc 4096
max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]服务器
#切换为root用户 su root #修改配置文件 vi /etc/sysctl.conf #空白处添加如下内容 vm.max_map_count=262144 #执行命令 sysctl -p
- ES重要配置修改 参考地址
编辑ES配置文件
#编辑ES配置文件 vim config/elasticsearch.yml #修改network.host: 0.0.0.0(默认ES只能本机访问,单机测试使用不涉及集群相关配置)
#安装中文分词 bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v6.2.3/elasticsearch-analysis-ik-6.2.3.zip #测试是否安装成功 curl -XGET -H 'Content-Type: application/json' 'http://localhost:9200/_analyze?pretty' -d '{ "analyzer" : "ik_max_word", "text": "中华人民共和国国歌" }' #安装拼音分词 bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch-analysis-pinyin/releases/download/v6.2.3/elasticsearch-analysis-pinyin-6.2.3.zip
安装Kibana kibana是一个与elasticsearch一块儿工做的开源的分析和可视化的平台。使用kibana能够查询、查看并与存储在elasticsearch索引的数据进行交互操做。使用kibana能执行高级的数据分析,并能以图表、表格和地图的形式查看数据。
#下载Kibana wget -P Downloads https://artifacts.elastic.co/downloads/kibana/kibana-6.2.3-x86_64.rpm #安装Kibana sudo rpm --install kibana-6.2.3-x86_64.rpm #查找Kibana配置文件路径 find / -name kibana.yml #修改Kibana配置 vim /etc/kibana/kibana.yml #启动Kinaba cd /usr/share/kibana bin/kibana
- 开机启动方式
#改用户及用户组 vim /etc/systemd/system/kibana.service #修改成 User=esuser Group=esgroup #开机启动Kinaba systemctl daemon-reload systemctl start kibana
- 启动Kinaba报错处理
permission denied, open '/usr/share/kibana/optimize/.babelcache.json'
#赋予用户执行权限或切换root帐户执行 chown -R esuser:esgroup /usr/share/kibana su root
Unable to connect to Elasticsearch at http://localhost:9200.
#修改Kibana配置 vim /etc/kibana/kibana.yml elasticsearch.url修改成ip加端口格式,检查elasticsearch配置是否正确
其它
ps -aux | grep kibana kill -9 16452 /var/log/messages