---恢复内容开始---

# ElasticSearch入坑指南之概述及安装


了解ElasticSearch


ElasticSearch(简称ES)基于Lucene的分布式全文检索引擎。使用ES可以实现近实时的存储、检索及海量数据的分析。


ES可以应用于以下场景

  • 日志或交易记录的收集,分析,趋势挖掘等,如:ELK可视化日志查询解析系统..
  • 站内搜索或商品数据检索,如:github,维基百科..
  • 价格报警平台,如:商品价格低于XX时短信通知客户..

ES核心概念

  • 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 来监控分片大小。

    分片两个重要的理由:
  1. 水平拆分/拓展
  2. 通过分布式和跨Shared操作提升性能及吞吐
  • Replicas(副本)

    为实现单Node/Shared故障迁移功能,ES可以设置一个或多个Index的数据到副本Node/Shared中。副本是一个分片的精确复制,每个分片可以有零个或多个副本。ES中可以有许多相同的分片,其中之一被选择更改索引操作,这种特殊的分片称为主分片。 当主分片丢失时,集群将副本提升为新的主分片。

    副本非常重要的两个理由是 :
  1. 在 shard/node 故障的情况下提供了高可用性。为了达到这个目的,需要注意的是在原始的/主 Shard 被复制时副本的 Shard 不会被分配到相同的节点上。
  2. 它可以让你水平扩展搜索量/吞吐量,因为搜索可以在所有的副本上并行执行。
  • 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相关概念与关系型数据库的对比

|关系型数据库|ElasticSearch|
|--------|--------|
|数据库Database|索引Index,支持全文索引|
|表Table|类型Type|
|数据行Row|文档Document,没有固定文档结构,不同文档可以有不同字段集合|
|数据列Column|字段Field|
|模式Schema|映射Mapping|

---

安装和配置

官方下载地址

#下载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配置文件
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

ElasticSearch入坑指南之概述及安装的更多相关文章

  1. Elasticsearch入坑指南之RESTful API

    Elasticsearch入坑指南之RESTful API Tags:Elasticsearch ES为开发者提供了非常丰富的基于Http协议的Rest API,通过简单的Rest请求,就可以实现非常 ...

  2. electron入坑指南

    electron入坑指南 简介 electron 实际集成chrome浏览器和node环境, 运行你写的网页 app 基本目录结构 index.html 名称可以不是index, 这个文件与普通网页的 ...

  3. Phalcon如何切换数据库《Phalcon入坑指南系列 三》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能(项目配置.控制器.模型.增.删.改.查) 三.Phalcon ...

  4. Phalcon如何创建多模块并能进行访问 《Phalcon入坑指南系列 四》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  5. Phalcon多模块如何实现连接不同数据库 《Phalcon入坑指南系列 五》

    本系列目录 一.Phalcon在Windows上安装 <Phalcon入坑指南系列 一> 二.Phalcon入坑必须知道的功能<Phalcon入坑指南系列 二> 三.Phalc ...

  6. C语言入坑指南-被遗忘的初始化

    前言 什么是初始化?为什么要初始化?静态变量和局部变量的初始化又有什么区别?实际应用中应该怎么做?本文将一一回答这些问题. 什么是初始化 初始化指的是对数据对象或者变量赋予初始值.例如: int va ...

  7. eclipse中导入外部包却无法查看对应源码或Javadoc的入坑指南

    eclipse中导入外部包却无法查看对应源码或Javadoc的 入坑指南 出现这个错误的原因是,你虽然导入了.jar包,但没有配置对应的Javadoc或源码路径,所以在编辑器中无法查看源 码和对应AP ...

  8. Rust入坑指南:核心概念

    如果说前面的坑我们一直在用小铲子挖的话,那么今天的坑就是用挖掘机挖的. 今天要介绍的是Rust的一个核心概念:Ownership.全文将分为什么是Ownership以及Ownership的传递类型两部 ...

  9. Rust入坑指南:鳞次栉比

    很久没有挖Rust的坑啦,今天来挖一些排列整齐的坑.没错,就是要介绍一些集合类型的数据类型."鳞次栉比"这个标题是不是显得很有文化? 在Rust入坑指南:常规套路一文中我们已经介绍 ...

随机推荐

  1. Android版本分布——2017年5月更新

    Code Name Version API Level Last month This month Change gingerbread(姜饼) 2.3.3——2.3.7 10 0.9% 1.0% 0 ...

  2. XMind *思维导图的安装步骤(图文详解)

    不多说,直接上干货! XMind中文官网:  http://www.xmindchina.net/ 这一款软件,是非常实用和棒,也帮助我了很多地方.推荐给大家 需要正版和激活的,请见博文最下端的QQ技 ...

  3. Annotate类

    在Annotate类中有个Annotator接口,定义如下: /** A client that has annotations to add registers an annotator, * th ...

  4. Python2.x 中文乱码问题

    Python 文件中如果未指定编码,在执行过程会出现报错: #!/usr/bin/pythonprint "你好,世界"; 以上程序执行输出结果为: File "test ...

  5. PHP面向对象常见符号总结($this-> 、self ::)

    转载:http://wyllife.blog.163.com/blog/static/4116390120116223528180/ 在php中常见的对象符号 1.$this this是指向当前对象的 ...

  6. mysql RR下不存在则插入

    主要看并发事务中不存在则插入(只有key索引)的阻塞情况. 表定义: mysql> desc user; +-------------+------------------+------+--- ...

  7. <MYSQL Index>

    About Mysql 1. Mysql工作流程分析 2. Mysql单实例安装(5.6.31) DATABASE 1. 事务的4种隔离级别 ——————————————————Mysql管理———— ...

  8. IOS bug之cannot be opened because the project file cannot be parsed

    刚才用Cornerstone更新代码后,再次打开项目时,不能打开,提示cannot be opened because the project file cannot be parsed后来在网上查了 ...

  9. webfrom后台

    using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...

  10. mybatis在oracle中的分页扩展

    applicationContext.xml <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlS ...