微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

1基础概念

1.1基础

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

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

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

1.2拓展

@H_404_10@1:倒排索引

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

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

@H_404_10@

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

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

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

@H_404_10@

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

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

@H_404_10@ 

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核心概念

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

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

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

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

@H_404_10@类型(type)

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

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

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

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

@H_404_10@ 

1.6安装ElasticSearch

  1. 首先去官网下载安装包,下载之后移到服务器上面,这里我放置在/opt/es下面

  2. 因为安全问题,Elasticsearch 不允许root用户直接运行,所以要创建新用户,在root用户中创建新用户,执行如下命令(bin文件夹下执行):
    1. useradd itqy # 新增itqy 用户
    2. passwd itqy #为itqy 用户设置密码
    3. @H_404_10@然后记得把elasticsearch授权给新创建的用户【chown -R itqy:itqy elasticsearch-7.13.1/】

    4. @H_404_10@

  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. @H_404_10@输入sysctl -p 之后可以看见之前配置的vm.max_map_count=655360

    3. @H_404_10@

  4. @H_404_10@ElasticSearch结构

    1. @H_404_10@

  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. @H_404_10@最后访问地址

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

    2. @H_404_10@

 

1.7Kibana安装

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

@H_404_10@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

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐