zoukankan      html  css  js  c++  java
  • 数据源管理 | 搜索引擎框架,ElasticSearch集群模式

    本文源码:GitHub·点这里 || GitEE·点这里

    一、集群环境搭建

    1、环境概览

    ES版本6.3.2,集群名称esmaster,虚拟机centos7。

    服务群 角色划分 说明
    en-master master 主节点:esnode1
    en-node01 slave 从节点:esnode2
    en-node02 slave 从节点:esnode3

    ElasticSearch基础功能和用法:

    在真正海量数据的业务场景中,ElasticSearch搜索引擎都是需要集群化管理的,实时搜素几十亿的数据十分常见。

    2、集群配置

    配置文件

    vim /opt/elasticsearch-6.3.2/config/elasticsearch.yml
    

    主节点配置

    # 集群主节点配置
    cluster.name: esmaster
    node.master: true
    
    # 节点名称 
    node.name: esnode1
    
    # 开发访问
    network.host: 0.0.0.0
    

    从节点配置

    注意这里两个从节点配置,node.name分别配置为esnode2和esnode3即可。

    # 集群名称
    cluster.name: esmaster
    
    # 节点名称
    node.name: esnode2
    
    # 开发访问
    network.host: 0.0.0.0
    
    # 主节点IP
    discovery.zen.ping.unicast.hosts: ["192.168.72.133"]
    

    内存权限

    vim /etc/sysctl.conf
    
    # 添加内容
    vm.max_map_count=262144
    
    # 执行
    sysctl -p
    

    3、集群启动

    添加esroot用户,并授权。

    /opt/elasticsearch-6.3.2/bin/elasticsearch
    

    单服务查看

    ps -aux |grep elasticsearch
    

    集群状态查看

    http://localhost:9200/_cluster/health?pretty
    
    {
      "cluster_name" : "esmaster",  # 集群名称
      "status" : "green",   # 绿:健康,黄:亚健康,红:病态
      "timed_out" : false,  # 是否超时
      "number_of_nodes" : 3, # 节点个数
    }
    

    二、集群模式测试

    1、环境配置

    dev环境

    配置单个节点,选择任意单节点,进行数据写入测试。

    spring:
      data:
        elasticsearch:
          # 集群名称
          cluster-name: esmaster
          # 单节点
          # cluster-nodes: en-master:9300
          # cluster-nodes: en-node01:9300
          cluster-nodes: en-node02:9300
    

    test环境

    链接集群环境,进行数据读取测试。

    spring:
      data:
        elasticsearch:
          # 集群名称
          cluster-name: esmaster
          # 集群节点
          cluster-nodes: en-master:9300,en-node01:9300,en-node02:9300
    

    当然所有的操作都可以基于单节点或者集群环境测试。

    2、实例对象

    基于注解管理数据对象实例。

    import org.springframework.data.annotation.Id;
    import org.springframework.data.elasticsearch.annotations.Document;
    
    @Document(indexName = "usersearchindex",type = "usersearch")
    public class UserSearch {
    
        //Id注解Elasticsearch里相应于该列就是主键,查询时可以使用主键查询
        @Id
        private Long id;
        private String userId;
        private String userName;
        private String sex;
    }
    

    3、操作案例

    提供一个数据查询操作和数据写入操作。

    import com.esearch.cluster.entity.UserSearch;
    import org.springframework.stereotype.Service;
    import javax.annotation.Resource;
    
    @Service
    public class UserSearchServiceImpl implements UserSearchService {
    
        @Resource
        private UserSearchRepository userSearchRepository ;
    
        @Override
        public String esInsert(Integer num) {
            for (int i = 0 ; i < num ; i++){
                UserSearch userSearch = new UserSearch() ;
                userSearch.setId(System.currentTimeMillis());
                userSearch.setUserId("Name"+i);
                userSearch.setUserName("ZSan"+i);
                userSearch.setSex("Male"+i);
                userSearchRepository.save(userSearch) ;
            }
            return "success" ;
        }
    
        @Override
        public Iterable<UserSearch> esFindAll (){
            return userSearchRepository.findAll() ;
        }
    
    }
    

    三、集群控制台

    这里是基于Kibana组件做的集群控制台。

    1、数据列表

    在discover面板中可以查看列表数据,也可以继续搜索。

    列表查询

    列表搜索

    2、开发工具

    在dev_tools面板中可以执行ElasticSearch相关命令。

    查看集群健康状态

    GET /_cat/health?v
    

    查询全部数据

    GET _search
    {
      "query": {
        "match_all": {}
      }
    }
    

    四、源代码地址

    GitHub·地址
    https://github.com/cicadasmile/data-manage-parent
    GitEE·地址
    https://gitee.com/cicadasmile/data-manage-parent
    

    推荐阅读:数据源管理系列

    序号 标题
    01 数据源管理:主从库动态路由,AOP模式读写分离
    02 数据源管理:基于JDBC模式,适配和管理动态数据源
    03 数据源管理:动态权限校验,表结构和数据迁移流程
    04 数据源管理:关系型分库分表,列式库分布式计算
    05 数据源管理:PostGreSQL环境整合,JSON类型应用
    06 数据源管理:基于DataX组件,同步数据和源码分析
    07 数据源管理:OLAP查询引擎,ClickHouse集群化管理
    08 数据源管理:Kafka集群环境搭建,消息存储机制详解
  • 相关阅读:
    数据结构与算法
    android vitamio的坑
    Fragment的坑
    scrollview里面嵌套listview的坑
    关于微信小程序的tabbar
    Intent初级学习
    HDU 4562 守护雅典娜
    SGU 542 Gena vs Petya
    [二] EditText and Button
    A Data Structure for Dynamic Trees
  • 原文地址:https://www.cnblogs.com/cicada-smile/p/13308744.html
Copyright © 2011-2022 走看看