分布式搜索与数据分析平台elasticsearch-学习平台搭建

大数据时代,Hadoop生态是最主流的生态,但是elasticsearch及ELKB形成的生态,基于搜索的思路,形成独树一帜的大数据搜索和数据分析平台。

一、elasticsearch介绍

elasticsearch对应的商业解决方案是splunk。Splunk是大数据领域第一家在纳斯达克上市公司,Splunk提供一个机器数据的引擎,可收集、索引和利用所有应用程序、服务器和设备(物理、虚拟和云中)生成的数据 ,从一个位置搜索并分析所有实时和历史数据。Elastic,Solr和Splunk分别占据了数据库搜索引擎的前三位。(参考《大数据搜索选开源还是商业软件?ElasticSearch 对比 Splunk》)

elasticsearch是基于lucene,也可以看做是分布式的lucene。elasticsearch(包括splunk)是一个近实时(NRT)的搜索引擎,一般从添加数据到能被搜索到只有很少的延迟(大约是1s),而查询数据是实时的。一般我们可以把ES配合logstash,kibana来做日志分析系统,或者是搜索方面的系统功能,比如在网上商城系统里实现搜索商品的功能也会用到ES。

以elasticsearch为核心的是ELKB技术栈(E就是elasticsearch,L是logstash,B是Beat,K是图形化界面Kibana),

ELKB平台整体架构

ES的典型使用场景有日志分析、时序分析、全文检索等(开源搜索引擎排名第一,Elasticsearch是如何做到的? 介绍了腾讯中的使用案例及其优化,如下图)。

腾讯对ES的优化考虑

二、elasticsearch学习平台的构建

参考《ElasticSearch最新版快速入门详解 》,本文基于CentOS7.6,IP地址是192.168.10.51。

1. Docker支持

参考《 CentOS 7安装docker环境

yum install -y yum-utils device-mapper-persistent-data lvm2
#添加docker的软件源地址
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast #更新yum缓存

#可以查看所有仓库中所有docker版本,并选择特定版本安装
yum list docker-ce --showduplicates | sort -r

#安装的是最新版本
yum install docker-ce 或者指定版本sudo yum install docker-ce-17.12.1.ce

#启动docker服务
systemctl start docker
#加入开机启动项
systemctl enable docker

#查看docker版本
docker version

2. Docker方式搭建Elasticsearch环境

#搜索docker镜像库里可用的ES镜像:
docker search elasticsearch
#stars排名第一的是官方的ES镜像,第二是大牛已经融合了ES7.7和Kibana7.7的镜像,用第二个。
docker pull nshou/elasticsearch-kibana

#把镜像启动为容器就可以了,端口映射保持不变,容器命名为eskibana。
docker run -d -p 9200:9200 -p 9300:9300 -p 5601:5601 --name eskibana  nshou/elasticsearch-kibana

3. 配套工具,Elasticsearch-head

ElasticSearch Head,是ES的图形化界面,用于调试和管理ES。可以有多种运行模式,最方面的是chrome浏览器扩展方式,可以从chrome网上商店安装。

如果国内不好访问chrome商店,可以用离线包(注:一般需要将离线包改成zip/rar后缀解压,从chrome扩展程序中,选择从已解压包的扩展方式,找到解压目录进行安装)

4. 验证ES安装

(1)验证ES:http://192.168.10.51:9200/,看到了那句经典的:You Know, for Search:

(2)验证Kibana:http://本文基于CentOS7.6,IP地址是192.168.10.51:5601/,然后会看到kibana界面,提供很多模拟数据,学习期间使用左下角那个扳手形状的Dev Tools最基本

5. 基本操作

ES 是RESTful 风格的系统,四个关键词:PUT(修改),POST(添加),DELETE(删除),GET(查询)。其中在ES里面PUT和POST的界限并不是很分明,有时候PUT也作为添加。

基本命令操作可以在Elastic的dev tool中执行(当然也可以用curl、postman等工具),在Elastic head中查看结果。

Elasticsearch 调试控制台中输入命令
Elasticsearch-head中查看索引数据

 

(1)索引基础操作

    创建一个空索引,创建了一个0副本2分片的ropledata索引,可以在Elasticsearch Head里刷新一下,查看索引的信息:

    PUT /ropledata
    {
      "settings": {
        "number_of_shards": "2",
        "number_of_replicas": "0"
      }
    }

(2)插入数据,插入数据的时候可以指定id,不指定ES会自动帮我们生成。如下代码是我们创建了一个101的文档,创建成功后,可以在Elasticsearch Head的数据浏览模块里看到这些数据:

POST /ropledata/_doc/101
{
  "id":1,
  "name":"且听_风吟",
  "page":"https://ropledata.blog.csdn.net",
  "say":"欢迎点赞,收藏,关注,一起学习"
}

(3)修改数据,ES修改数据本质上是对文档的覆盖。ES对数据的修改分为全局更新和局部更新

#全局更新

PUT /ropledata/_doc/101
{
  "id":1,
  "name":"且听_风吟",
  "page":"https://ropledata.blog.csdn.net",
  "say":"再次欢迎点赞,收藏,关注,一起学习"
}

#局部更新

POST /ropledata/_update/101
{
  "doc":
  {
    "say":"奥力给"
  }
}

每次全局更新之后这个文档的_version都会发生改变。局部更新代码,会发现除了第一次执行,后续不管又执行了多少次,_version都不再变化!

  1. 全局更新本质上是替换操作,即使内容一样也会去替换;
  2. 局部更新本质上是更新操作,只有遇到新的东西才更新,没有新的修改就不更新;
  3. 局部更新比全局更新的性能好,因此推荐使用局部更新

(4)查询数据:数据查询知识点非常多,也非常复杂,最基本的根据id搜索数据:

GET /ropledata/_doc/101

6.  ES与磁盘空间

ES报错 [FORBIDDEN/12/index read-only / allow delete (api)] - read only elasticsearch indices的解决

第一次插入数据的时候,就出现上面的提示,后来才发现是Es所在磁盘空间要求不得使用95%以上。

在config/elasticsearch.yml中,洪水阶段水印设置为99%,你也可以自己设置其他百分比,默认是95%。

cluster.routing.allocation.disk.watermark.flood_stage: 95%

es默认在/usr/local下面,一般是/分区,df -h可以用于查看空间(后来发现是/var/lib下面Linux虚拟机占用了一些空间),腾出空间后,执行

PUT ropledata/_settings
{
  "index":{
    "blocks":{
      "read_only_allow_delete":"false"
      }
    }
  }

官方解决方法:curl -XPUT -H "Content-Type: application/json" http://127.0.0.1:9200/_all/_settings -d '{"index.blocks.read_only_allow_delete": null}'

建议安装es的时候注意提前规划空间需求。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值