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

# 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. ActiveMQ开发注意要点

    目录1.如何保证消息的成功处理2.避免消息队列的并发3.消息有效期的管理4.过期消息,处理失败的消息如何处理 1.保证消息的成功处理消息发送成功后,接收端接收到了消息.然后进行处理,但是可能由于某种原 ...

  2. Linux-(kill,wc,killall,ln,cal,date)

    kill命令 1.命令格式: kill [参数] [进程号] 2.命令功能: 发送指定的信号到相应进程.不指定型号将发送SIGTERM(15)终止指定进程.如果仍无法终止该程序可用“-KILL” 参数 ...

  3. Pascal的3种注释

    1.单行注释 {大括号里的内容都被注释掉} 2.单行注释2 //这种注释几乎是绝大部分语言中通用的了 3.多行注释 (*pascal的多行注释有点奇怪,使用的是:括号+星号的方式*)       其他 ...

  4. windows 系统安装 IIS 以及配置 web

    Win7系统或win8自带了IIS和framework,不需要单独去下载,只需要开启后就可以运行asp.net程序 由于时间关系,先分享两个关于这个的链接: win7安装iis及web配置教程 htt ...

  5. PHP初级篇

    PHP初级篇 PHP环境搭建: 企业中常用到的环境是:Linux+Apache+MySQL+PHP 学习环境是:Windows+Apache+MySQL+PHP 工具 Apache 2.4.4 MyS ...

  6. SqlDataReader的关闭问题,报错:“阅读器关闭时尝试调用 Read 无效”

    SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);//关闭SqlDataReader 会自动关闭Sqlconn ...

  7. [转]ng-grid Auto / Dynamic Height

    本文转自:https://stackoverflow.com/questions/23396398/ng-grid-auto-dynamic-height I think I solved this ...

  8. babel使用入门以及使用webpack+babel来"编译"你的JS代码

    Babel是一个广泛使用的转码器,可以将ES6代码转为ES5,从而在现有的环境中执行. 这是一个开端,以后遇到问题,也会持续记录. 一.babel配置 官网有更详细的配置教程:https://www. ...

  9. C#将Dll嵌入到EXE

    感谢博主的方法: https://blog.csdn.net/lin381825673/article/details/39122257 我之前也看了网上的其他的方法试了都不行 第一种方法就是说用IL ...

  10. 《Programming iOS 7》读书笔记 - 窗体大小与状态栏

    1.从iOS7开始,状态栏开始变为透明的,根识图占领了整个窗体,包括状态栏后面的20像素高的区域,这种样式无法被改变.iOS6的状态栏是不透明的,窗体的尺寸通常会比屏幕的尺寸要小,可以设置窗体的尺寸为 ...