ElasticSearch入坑指南之概述及安装

Stella981
• 阅读 686

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

# 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
点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Easter79 Easter79
3年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
3年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Stella981 Stella981
3年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这