• Solr 入门实战(2)--SolrCloud 简介及安装


    SolrCloud 是 Solr 的集群版,用于在多个服务器之间分发索引内容和查询请求。本文主要介绍 SolrCloud 的基本概念及安装,文中使用到的软件版本:Solr 8.9.0、jdk1.8.0_181。

    1、SolrCloud 简介

     SolrCloud 是 Solr 提供的分布式搜索方案,具有容错性和高可用性。SolrCloud 使用 ZooKeeper 来管理集合、分配、主节点和副本,指定哪些服务器需要处理请求。SolrCloud 有如下特点: 

    1)集中式的配置信息
    2)自动容错
    3)近实时搜索
    4)查询时自动负载均衡

    SolrCloud 的架构图如下:

    1)物理结构
        三个 Solr 实例(每个实例包括两个 Core)组成一个 SolrCloud。
    2)逻辑结构
        索引集合包括两个 Shard(shard1和shard2),shard1 和 shard2 分别由三个 Core 组成,其中一个 Leader 两个 Replication,Leader 是由 Zookeeper 选举产生。每个 shard 上三个 Core 的索引数据一致,解决高可用问题;用户发起索引请求负载到 shard1 和 shard2 上,解决高并发问题。
    a、collection
        Collection 在 SolrCloud 集群中是一个逻辑意义上的完整的索引结构。它常常被划分为一个或多个 Shard(分片),它们使用相同的配置信息。
    b、Core
        每个 Core 是 Solr 中一个独立运行单位,提供索引和搜索服务。一个 shard 需要由一个 Core 或多个 Core 组成。
    c、Master 或 Slave
        Master 是 master-slave 结构中的主节点,Slave 是 master-slave 结构中的从节点。同一个 Shard 下 master 和 slave 存储的数据是一致的。
    d、Shard
        Collection 的逻辑分片。每个 Shard 被化成一个或者多个 replication,通过选举确定哪个是 Leader。

    2、SolrCloud 安装

    2.1、集群规划

    主机 用途
    10.40.96.10 安装 Zookeeper
    10.40.96.11 安装 Solr 实例
    10.40.96.12 安装 Solr 实例
    10.40.96.13 安装 Solr 实例

    2.2、安装 Zookeeper

     Zookeeper 安装可以参考:https://www.cnblogs.com/wuyongyin/p/12485181.html

    安装后 Zookeeper 地址为:10.40.96.10:2181

    2.3、单机安装 Solr

    在一台机器(10.40.96.10)上先安装 Solr。

    2.3.1、下载并解压 Solr

     https://solr.apache.org/downloads.html

    tar zxvf solr-8.9.0.tgz

    2.3.2、配置 IK 分词器

    1、下载 IK 分词器的 jar 包放入 server/solr-webapp/webapp/WEB-INF/lib 目录下;可到 Maven 中央仓库(https://search.maven.org/)下载 jar 包:

    <dependency>
        <groupId>com.github.magese</groupId>
        <artifactId>ik-analyzer</artifactId>
        <version>8.4.0</version>
    </dependency>

    2、将 resources 目录下的 IKAnalyzer.cfg.xml、ext.dic、stopword.dic 放入 server/resources 目录下;可以在 github(https://github.com/magese/ik-analyzer-solr) 上下载这些配置文件。

    3、复制默认配置用于 IK 配置

    cd ${SOLR_HOME}/server/solr/configsets
    cp -r _default/ ik_default

    4、将 resources 目录下的 ik.conf 及 dynamicdic.txt 放入 ${SOLR_HOME}/server/solr/configsets/ik_default/conf 目录下;可以在 github(https://github.com/magese/ik-analyzer-solr) 上下载这些配置文件。

    5、修改 ${SOLR_HOME}/server/solr/configsets/ik_default/conf/managed-schema,添加 IK 分词器:

    <fieldType name="text_ik" class="solr.TextField">
      <analyzer type="index">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="false" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
          <tokenizer class="org.wltea.analyzer.lucene.IKTokenizerFactory" useSmart="true" conf="ik.conf"/>
          <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

    6、将配置文件上传至 Zookeeper

    cd  ${SOLR_HOME}/server/scripts/cloud-scripts
    ./zkcli.sh -zkhost 10.40.96.10:2181 -cmd upconfig -confname my-config -confdir ${SOLR_HOME}/server/solr/configsets/ik_default/conf/

    IK 分词器详细的使用可参考官网说明:https://github.com/magese/ik-analyzer-solr/blob/master/README-CLOUD.md

    2.4、分发 Solr 到其他主机

    scp -r ${SOLR_HOME} hadoop@10.40.96.12:/home/hadoop
    scp -r ${SOLR_HOME} hadoop@10.40.96.13:/home/hadoop

    2.5、启动/停止 SolrCloud

    在各主机上运行:

    bin/solr start -c -z 10.40.96.10:2181 [-p port]
    
    bin/solr stop [-p port]

    2.6、控制台

    http://ip:8983/solr

    3、SolrCloud 控制台使用

    3.1、添加 Collection 对应的配置

    可以通过命令行来添加配置到 Zookeeper,先使用带 IK 分词器的默认配置(第一台 Solr 主机 10.40.96.11 上有)添加一个新的配置,再在该配置上进行调整修改。

    cd  ${SOLR_HOME}/server/scripts/cloud-scripts
    ./zkcli.sh -zkhost 10.40.96.10:2181 -cmd upconfig -confname new_config_1 -confdir ${SOLR_HOME}/server/solr/configsets/ik_default/conf/

    3.2、添加 Collection

    使用上一步新加的配置:

    3.2、在 Collection 中添加 schema 信息

     可以在 managed-schema 中查看添加的字段信息:

    3.3、添加/更新文档

    {"id": "123456","age": 40,"name": "李白","poems": "望庐山瀑布","about": "字太白","success": "创造了古代浪漫主义文学高峰、歌行体和七绝达到后人难及的高度"},
    {"id": "123457","age": 31,"name": "杜甫","poems": "望岳","about": "字子美","success": "唐代伟大的现实主义文学作家,唐诗思想艺术的集大成者"}

    3.4、查询文档

  • 相关阅读:
    服务器编程入门(12) 守护进程
    Effective C++(10) 重载赋值操作符时,返回该对象的引用(retrun *this)
    C++ Primer(6) 模板和泛型编程(上)
    Effective C++(9) 构造函数调用virtual函数会发生什么
    Android开发(7)数据库和Content Provider
    Effective C++(7) 为多态基类声明virtual析构函数 or Not
    Effective C++(6) 如何拒绝编译器的自动生成函数
    Effective C++(4) 确定对象被使用前已先被初始化
    Effective C++(5) 了解C++默默地编写并调用哪些函数
    Effective C++(1-2) 编译器替换预处理器
  • 原文地址:https://www.cnblogs.com/wuyongyin/p/15308593.html
Copyright © 2020-2023  润新知