1

ElasticSearch 简介

1. ElasticSearch 简称 ES
2. ElasticSearch 是基于 Lucene 的开源、分布式、RESTful 接口全文搜索引擎
3. ElasticSearch 是一个分布式文档数据库
4. ElasticSearch 支持高可用和可扩展

ElasticSearch 优势

1. 横向可扩展性
    1. 只需增加服务器,做一些配置文件修改,启动就可以并入集群
2. 分片机制提供更好的分布性
    1. 同一个索引文件分成多个分片(sharding),这点类似于 HDFS 的块机制,分而治之的方式可以提高处理效率
    2. 注意:集群创建后,主分片的数量是不能够改变的,索引数据的存储依赖于主分片数量进行逻辑处理的
3. 高可用
    1. 提供复制(relpica)机制,一个分片可以设置多个复制,使得某台服务器宕机,集群可以使用,
       并把宕机数据恢复到其他可用节点
    2. 使用简单 : 只需一条命令就可以下载文件,然后很快就可以搭建一个站内搜索引擎

ElasticSearch 应用场景

1. 大型日志收集(ELK)
2. 电商商品搜索或者网盘搜索引擎

ElasticSearch 存储结构

1. 面向文档型数据库,一条数据就是一个文档,以 JSON 格式进行存储
    {
        "username" : "张三",
        "age" :      12,
        "sex" :      0
    }
2. 与关系型数据库的对比
    关系型数据库 :     数据库(database) ---> 表(table) ------> 行(row) -----> 列(Columns)
    ElasticSearch : 索引(index) ---->  类型(type) ----> 文档(document) ----> 字段(fields)

Linux(CentOS7) 安装 ElasticSearch

1. 安装 jdk 以及配置环境变量
    export JAVA_HOME=/usr/local/jdk1.8.0_181
    export PATH=$JAVA_HOME/bin:$PATH
    export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    
    source /etc/profile
2. 下载elasticsearch安装包
    官方文档https://www.elastic.co/downloads/elasticsearch
    注意:linux安装内存建议1g内存以上
3. 上传elasticsearch安装包,解压elasticsearch 
    1. tar -zxvf elasticsearch-6.4.3.tar.gz
4. 修改配置文件 :
    1. network.host: 192.168.212.151     es所在服务id
    2. http.port: 9200                    es 供外部访问IP
5. 启动elasticsearch
    1. 常见错误分析
    can not run elasticsearch as root
    解决方案:
    因为安全问题elasticsearch 不让用root用户直接运行,所以要创建新用户
    第一步:liunx创建新用户  adduser XXX    然后给创建的用户加密码 passwd XXX    输入两次密码。
    第二步:切换刚才创建的用户 su XXX  然后执行elasticsearch  会显示Permission denied 权限不足。
    第三步:给新建的XXX赋权限,chmod 777 *  这个不行,因为这个用户本身就没有权限,肯定自己不能给自己付权限。所以要用root用户登录付权限。
    第四步:root给XXX赋权限,chown -R XXX /你的elasticsearch安装目录。
    然后执行成功。
    
    创建一个分组 groupadd esmayikt
    useradd esyushengjun -g esmayikt -p 123456
    chown -R esyushengjun:esmayikt  elasticsearch-6.4.3
    su esyushengjun 切换用户 
    
    继续报错
    bootstrap checks failed max virtual memory areas vm.max_map_count [65530] is
    
    vi /etc/sysctl.conf
    vm.max_map_count=655360
    sysctl –p
    
    
    max file descriptors [4096] for elasticsearch process is too low, increase to at least [65536]
    vi /etc/security/limits.conf
    * soft nofile 65536
    * hard nofile 131072
    * soft nproc 2048
    * hard nproc 4096
    
    
    重启服务器即可
6. 访问elasticsearch,需要关闭防火墙   systemctl stop firewalld
7. 9300与9200区别
    9300端口: ES节点之间通讯使用
    9200端口: ES节点 和 外部 通讯使用

Kibana 环境安装

1. 下载到对应的版本进行解压  tar -zxvf kibana-6.4.3-linux-x86_64.tar.gz
2. 修改配置文件    vim config/kibana.yml
    server.port: 5601
    server.host: "192.168.212.151"
    elasticsearch.url: "http:// 192.168.212.151:9200"
3. 启动 ./bin/kibana
4. 访问查看   http://192.168.212.179:5601/app/kibana

Elasticsearch版本控制

1. 为什么要进行版本控制 : 为了保证数据在多线程操作下的准确性
2. 悲观锁和乐观锁
    1. 悲观锁:假设会发生并发冲突,屏蔽一切可能违反数据准确性的操作
    2. 乐观锁:假设不会发生并发冲突,只在提交操作是检查是否违反数据完整性
3. 内部版本控制和外部版本控制
    1. 内部版本控制:_version自增长,修改数据后,_version会自动的加1
    2. 为了保持_version与外部版本控制的数值一致 使用version_type=external检查数据当前的version值是否小于请求中的version值

    PUT /test/user/1?version=2
    {
      "name":"zhangsan",
      "sex":0,
      "age":22
    }

郭鹏飞
12 声望3 粉丝

有志者事竟成,向着心中的目标(20K)努力