乐趣区

数据源管理-搜索引擎框架ElasticSearch集群模式

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

一、集群环境搭建

1、环境概览

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

ElasticSearch 根底性能和用法:

  • MySQL 数据全量和增量形式向 ES 搜索引擎同步
  • Linux 零碎 Centos7 环境搭建 ElasticSearch 中间件
  • SpringBoot2 整合 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 集群环境搭建,音讯存储机制详解
退出移动版