要求:
- 了解Solr应用开发适用场景
- 熟悉Solr应用开发流程
- 熟悉并使用Solr常用API
- 理解Collection设计基本原则
- 应用开发实践
Solr简介
- Solr是一个高性能,基于Lucene的全文检索服务,也可以作为NoSQL数据库使用。
- Solr对Lucene进行了扩展,提供了比Lucene更为丰富的查询语句,同时实现了可配置、可扩展,并对查询性能进行了优化,还提供了一个完善的功能管理界面。
- SolrCloud是从Solr 4.0 版本开始发出的具有开创意义的分布式索引和索引方案,基于Sorl和Zookeeper进行开发的。
Solr概念体系-总述
常见术语:
- Config Set:Solr Core提供一组配置文件 ,
- Core:即Solr Core ,
- Shard:Collection的逻辑分片
- Replice:Shard下的实际存储索引的一个副本,与Core对应
- Leader:赢得选举的Shard Peplicas
- Zookeeper:它在Solr Core是必须的,提供分布式锁、处理Leader选举、管理配置等功能
Solr的常用应用场景
- 待检索数据类型复杂
- 检索条件多样化(如涉及字段太多),常规查询无法满足
- 读取远多于写入数据
Solr应用开发流程-制定业务目标
业务数据规模及数据模型
- 涉及Collection的Shard划分及Schema的定义
实时索引、查询性能要求
- 涉及Collection的Shard划分、索引存储位置
查询场景
Solr应用开发流程-初始化及安全认证
- 初始化并获取配置
- 安全认证
- 获取CloudSolrClient
- 调用Solr APL
Solr应用开发流程-设计Collection
- 根据业务数据的关系设计schema.xml
- 根据写入和查询场景设计uniqueKey字段
- 根据写入和查询性能要求设计solrconfig.xml
- 根据业务数据规模和Solr集群规模确定Shard数目
- 根据可靠性能要求设定Shard副本数
Collection设计-索引存储位置
索引存储在HDFS
缺点:
- 与存储在本地磁盘相比,性能下降30%-50%
- 实时单节点写入速度<=2MB/s
- 数据膨胀略高于存储在本地
优点:
- Sorl设置Replica即可,利用HDFS副本机制保障数据可靠性
- 数据管理由HDFS完成,包括各节点数据balance、方便迁移
配置集Schema设计-Field
dynamicField
- 动态的字段设置,用于后期自定义字段,”*“号通配符。
copyField