ElasticSearch 入门(一)基本概念以及linux安装

1基础概念

1.1基础

1:使用关系型数据库性能上满足不了要求。比如去商品表中查询带有手机的商品。由于模糊查询左边加了通配符%,导致索引无效。索引无效代表数据需要一条条去匹配。导致性能极差( 使用模糊查询,左边有通配符,不会走索引,会全表扫描,性能低)  =》关系型数据库性能低

SELECT * FROM goods WHERE title LIKE ' %手机%' ;

2:搜索关键词 比如【华为手机】,此时数据库只能搜到【华为手机】的数据,搜索不到仅仅是【华为】/【手机】的数据(可以参考去淘宝、京东等地方搜索结果:最前面是【华为手机】、后面数据则只包含【华为】/【手机】的数据) =》关系型数据库功能弱

1.2拓展

1:倒排索引

倒排索引:将各个文档中的内容,进行分词,形成词条。然后记录词条和数据的唯一标识(id) 的对应关系,形成的产物。

例如:”床前明月光”--> 分词。反向(倒排)索引:

1.3ElasticSearch数据的存储和搜索原理

分为两个部分:索引和文档。

例如下图:将文档中数据(json格式)id作为value,title中数字进行拆解作为term,每次搜索先找到term(会按照顺序一一条条往下找,找到之后就不会往下找了【关系型数据库一般都是全表扫描,所以这个币关系型数据库快】),然后再通过term找到文档(document)数据中的id,通过id找到数据

ElasticSearch创建便会建立一个排序;生成的倒排索引中,词条会排序,形成-颗树形结构,提升词条的查询速度。

Demo:使用“华为手机”作为关键字查询,如果没有【华为手机】,ElasticSearch则会将这个关键词自动拆分成两个部分(term)华为(value=1、3)、手机 (value=1、2、3)然后再取它们交集或者并集

 

1.4ElasticSearch概念

  1. ElasticSearch是一个基于Lucene的搜索服务器
  2. 是一个分布式、高扩展、高实时的搜索与数据分析引擎
  3. 基于RESTful web接口
  4. Elasticsearch是用Java语言开发的,并作为Apache许可条款下的开放源码发布,是一种流行的企业级搜索引|擎
  5. 应用场景
    1. 搜索:海量数据的查询
    2. 日志数据分析
    3. 实时数据分析
  6. MySQL有事务性而ElasticSearch没有事务性所以你删了的数据是无法恢复的。
  7. ElasticSearch没有物理外键这个特性,,如果你的数据强一致性要求比较高,还是建议慎用
  8. ElasticSearch和MySq|分工不同,MySQL负责存储数据,ElasticSearch负责搜索数据。

1.5核心概念

索引(index):ElasticSearch存储数据的地方,可以理解成关系型数据库中的数据库概念。

映射(mapping):mapping定义了每个字段的类型、字段所使用的分词器等。相当于关系型数据库中的表结构。

文档(document):Elasticsearch中的最小数据单元,常以json格式显示。- -个document相当于关系型数据库中的一行数据。

倒排索引:一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,对应一个包含它的文档id列表。

类型(type)

一种type就像一类表。如用户表、角色表等。在Elaticsearch7.X默认type为 _doc

- ES 5.x中一 个index可以有多种type.

- ES 6.x中一个index只能有一种type。

- ES 7.x以后,将逐步移除type这个概念,现在的操作经不再使用,默认_doc

 

1.6安装ElasticSearch

  1. 首先去官网下载安装包,下载之后移到服务器上面,这里我放置在/opt/es下面
  2. 因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令(bin文件夹下执行):
    1. useradd itqy # 新增itqy 用户
    2. passwd itqy #为itqy 用户设置密码
    3. 然后记得把elasticsearch授权给新创建的用户【chown -R itqy:itqy elasticsearch-7.13.1/】

  3. 新创建的itqy用户最大可创建文件数太小,最大虚拟内存太小,切换到root用户,编辑下列配置文件,添加类似如下内容
    1. #切换到root用户
      su r oot
      #1. ===最大可创建文件数太小======
      vim /etc/security/limits.conf
      #在文件末尾中增加下面内容
      itqy soft nofile 65536
      itqy hard nofile 65536
      # =====
      vim /etc/security/limits.d/20-nproc.conf
      #在文件末尾中增加下面内容
      itqy soft nofile 65536
      itqy hard nofile 65536
      * hard nproc 4096
      #注:*代表Linux所有用户名称
      #2. ===最大虛拟内存太小======
      vim /etc/sysctl.conf
      #在文件中增加下面内容
      vm.max_map_count=655360
      #重新加载,输入下面命令:
      sysctl -p
    2. 输入sysctl -p 之后可以看见之前配置的vm.max_map_count=655360

  4. ElasticSearch结构

  5.  配置config下的elasticsearch.yml 在最末尾添加以下配置
    1. cluster.name: my-application
      node.name: node-1
      network.host: 0.0.0.0
      http port: 9200
      cluster.initial_master_nodes: ["node-1"]
      
      
      
      #cluster.name:配置elasticsearch的集群名称, 默认是elasticsearch。 建议修改成有具体含义名称
      #node.name:节点名, elasticsearch会默认随机指定一个名字, 建议指定一个有意义的名称, 方便管理
      #network.host:设置为0.0.0.0允许外网访问
      #http.port: Elasticsearch的http访问端口
      #cluster.initial_ master. nodes:初始化新的集群时需要此配置来选举master
  6. 启动ElasticSearch:进入bin文件夹下 ./elasticsearch
  7. 最后访问地址

    1. 先在服务器上访问:【 curl -XGET http://111.230.182.125:9200/ 】

 

1.7Kibana安装

Kibana是一个针对Elasticsearch的开源分析及可视化平台,用来搜索、查看交互存储在Elasticsearch索引中的数据。使用Kibana,可以通过各种图表进行高级数据分析及展示。

Kibana让海量数据更容易理解。它操作简单,基于浏览器的用户界面可以快速创建仪表板(dashboard) 实时显示Elasticsearch查询动态。下载的版本必须和ElasticSearch版本一致

  1. 首先将文件移动到linux上面,并且解压: tar -zxvf 文件名称
  2.  修改 config/kibana. yml最末尾添加 参数
  3. server.port: 5601
    server.host: "0.0.0.0"
    server.name: "kibana-itcast"
    elasticsearch.hosts: ["http://127.0.0.1:9200"]
    elasticsearch.requestTimeout: 99999
    
    #server.port: http访问端口
    #server.host: ip地址, 0.0.0.0表示可远程访问
    #server.name: kibana服务名
    #elasticsearch.hosts: elasticsearch地址
    #elasticsearch.requestTimeout:请求elasticsearch超时时间,默认为30000,此处可根据情况设置
  4. 然后进入bin文件夹下启动[不推荐root启动]
  5. ./kibana --allow-root (kibana不推荐root启动,如果强行 则需要后面加上  --allow-root)
  6. 出现这个就说明成功
  7. 启动kibana
  8. chown -R itqy:itqy kibana-7.13.1-linux-x86_64
    su itqy
    cd kibana-7.13.1-linux-x86_64/bin
    ./kibana

     

  1. 8ElasticSearch常见错
    1. Caused by: java.lang.RuntimeException: can not run elasticsearch as root
      1. Elasticsearch不能用root账号运行,必须新创建一个账号
    2. java.nio.file.AccessDeniedException: /usr/share/
      1. 当前账号没有权限
      2. 先给当前账号授权【chown -R itqy:itqy elasticsearch-7.13.1/】
      3. 然后输入:chmod 777 /opt/es/elasticsearch-7.13.1

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值