Solr搜索引擎【索引管理】
一.索引存储
当文档提交到索引之后,directory目录组件会将它们写入到持久化存储器。Solr的目录组件具有以下重要特点:
1.隐藏持久存储的读写细节,例如,将文档写入到磁盘或通过JDBC在数据库中存储文档。
2.实现特定的存储锁定机制,防止索引出错。例如,在操作系统级别上基于文件系统的存储锁定。
3.将Solr从JVM和操作系统的专有性中解脱出来。
4.启用基础目录方案的扩展机制,以支持特定应用,如近实时搜索。
Solr提供了不同的目录方案,但没有所谓的适用于所有Solr装机情况的最佳目录方案。根据Solr应用的具体情况,思考如何确定最佳方案。实践中取决于操作系统本身、JVM类型及应用场景等。
二.默认存储配置
默认情况下,Solr为一个内核设置一个数据目录,将数据存储在本地文件系统中。默认情况下,将索引数据存储在conf配置目录同级的data目录下。在Solr4.x及之前的版本中,可以直接配置Solr core的一些基本信息,如下:
<core loadOnStartup="true" instanceDir="collection1/" transient="false" name="collection1" dataDir="/usr/local/solr-data/collection1" />
但是在之后版本就不建议这样配置,随着版本更新,新版本逐渐从之前的单机Solr转向SolrCloud集群,在集群模式中,索引数据的配置都是一直的,不需要单独指定。
首先要考虑,索引的数据目录是否有足够的存储容量。此外,数据目录支持快速读写也是非常重要的,其中对读性能要求更高【Solr的目的是快速查询而不是批量更新】。因此,在设置Solr时需要考虑一下问题:
1.每个内核不应与其他进程争夺磁盘空间。
2.如果同一台服务器上有多个内核,建议为每个索引单独设置独立的物理磁盘进行存储。
3.如果预算允许,考虑使用高质量、高速磁盘,如固态硬盘SSD。
4.考虑服务器RAID【磁盘阵列】策略对Solr的影响。
5.操作系统中用于缓存的内存容量也会对磁盘I/O需求产生不可小觑的影响。
三.选择一个目录方案
一旦解决了存储方面的问题,还需要考虑存储方案的最佳目录方案。Solr使用solr.NRTCachingDirectoryFactory启用默认目录,在solrconfig.xml中配置<directoryFactory>元素来指定此目录。

NRTCachingDirectoryFactory是solr.StandDirectoryFactory的一个封装类,用来添加对近实时搜索的支持。在运行时,StandardDirectoryFactory根据操作系统与JVM类型来选择一个具体的目录方案。

详解:
1.MMapDirectory:读取索引时使用内存映射I/O。这是安装了Oracle JVM的64位Windows、Solaris或Linux类操作系统的最佳选择。
2.SimpleFSDirectory:使用Java的RandomAccessFile方法。除非是32位Windows操作系统,否则应避免使用此方法。
3.NIOFSDirectory:通过java.nio进行优化,以避免同一个文件的同步读操作。这是JVM长期存在的一个问题,应避免在Windows上使用此方法。
通过Solr控制台的内核管理页,可以看见Solr服务器指定的数据目录【单机模式】:

注意,在SolrCloud集群模式时是看不到这是设置的!

Solr搜索引擎【索引管理】的更多相关文章
- 配置好solr搜索引擎服务器后java后台如何将商品信息导入索引库
首先,在配置文件目录中添加solr 服务器的bean 配置文件 solr服务器的url可以写在配置文件中: url地址其实就是我们网页可以访问的solr地址: 然后我们写 service packag ...
- elasticsearch系列二:索引详解(快速入门、索引管理、映射详解、索引别名)
一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...
- elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解
一.快速入门1. 查看集群的健康状况http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 状 ...
- Elasticsearch vs Solr 搜索引擎对比和选型
前言 全文搜索属于最常见的需求,开源的 Elasticsearch 是目前全文搜索引擎的首选. 基于Lucene它可以快速地储存.搜索和分析海量数据.维基百科.Stack Overflow.Githu ...
- Solr搜索引擎服务器学习笔记
Solr简介 采用Java5开发,基于Lucene的全文搜索服务器.同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置.可扩展并对查询性能进行了优化,并且提供了一个完善的功能 ...
- Lucene/Solr搜索引擎开发笔记 - 第1章 Solr安装与部署(Jetty篇)
一.为何开博客写<Lucene/Solr搜索引擎开发笔记> 本人毕业于2011年,2011-2014的三年时间里,在深圳前50强企业工作,从事工业控制领域的机器视觉方向,主要使用语言为C/ ...
- PHP-从零开始使用Solr搜索引擎服务(下)
前言: 原文地址: http://www.cnblogs.com/JimmyBright/p/7156085.html 前面在配置完成Solr服务之后,在浏览器上可以打开Solr的管理界面,这个界面几 ...
- Solr搜索引擎 — 通过mysql配置数据源
一,准备数据库数据表结构 CREATE TABLE `app` ( `id` int(11) NOT NULL AUTO_INCREMENT, `app_name` varchar(255) NOT ...
- 手动刷新magento的索引管理方法
当我们网站商品很多的时候,比如有几千件,我们刷新Magento的索引管理(Index Management)经常会失败.那么后台刷新不了,我们还可以通过命令行来刷新. 使用命令行来刷新索引管理会极大降 ...
- Solrj和Solr DIH索引效率对比分析
测试软件环境: 1.16G windows7 x64 32core cpu . 2.jdk 1.7 tomcat 6.x solr 4.8 数据库软件环境: 1.16G windows7 x64 ...
随机推荐
- 《Effective Java》 读书笔记(四) 使用私有构造方法执行非实例化
在许多时候,我们会写一个类,这个类只是用来提供一些静态方法或静态属性,就好像C++的函数一样,比如 java.lang.Math,java.util.Arrays等,但是有时候这些类的用户可能会在无意 ...
- 模板(ac):启发式合并
首先说明一点:线段树合并不是启发式合并. 启发式合并的大概内容就是:把小的数据结构按照这个数据结构的正常插入方法,一个一个地暴力塞进去. 而线段树合并显然不是这个东西. 这道题的题解太烂了,所以耽误了 ...
- CSPS模拟 79
T1 建一颗新树,倍增 T2 WARNING:竞赛图如果有环,则最小环一定为三元环 (发现这个结论的这把都稳了) 然后三元环计数,发现部分分都是为了审出题意但是不会正解的人设的.. 由于对于任意一种方 ...
- Asp.net Core 系列之--3.领域、仓储、服务简单实现
ChuanGoing 2019-11-11 距离上篇近两个月时间,一方面时因为其他事情耽搁,另一方面也是之前准备不足,关于领域驱动有几个地方没有想通透,也就没有继续码字.目前网络包括园子里大多领域驱 ...
- P3052 [USACO12MAR]摩天大楼里的奶牛(迭代加深搜索)
(已经一句话了) 第一反应:暴力 第二反应:朴素算法过不去 第三反应:没法折半暴搜(没法统计答案) 所以,歪歪了一个类似贪心刷表的方法,过了这道题. 首先,如果爆搜的话会有几个状态: 当前牛 当前几个 ...
- Docker变量的相关总结
一.AVG与ENV 1.在Dockerfile中,使用ARG与ENV的区别 ARG:ARG定义的变量用于构建Docker镜像,在通过build把Dockerfile构建成镜像后,ARG定义的变量便不在 ...
- m96-97 lsc nc赛
这一次 lsc 再一次一道题都没AC,看来lsc已经凉了! 出了分,旁边的_LH大喊了一声 “woc,lsc,你真是太垃圾!”...........“好吧!” 我确实很垃圾!(大佬这次都没考,所以我更 ...
- IntelliJ IDEA 中设置左菜单字体, 编辑器字体和控制台的字体
IntelliJ IDEA 中设置左菜单字体大小 File-Settings,然后选择appearance,下图右侧红色边框中的内容即设置菜单的字体和大小 IntelliJ IDEA 中设置当前编 ...
- nyoj 52-无聊的小明 (模拟, SET)
52-无聊的小明 内存限制:64MB 时间限制:3000ms Special Judge: No accepted:1 submit:3 题目描述: 这天小明十分无聊,没有事做,但不甘于无 ...
- java操作RabbitMQ添加队列、消费队列和三个交换机
假设已经在服务器上安装完RabbitMQ.我写的教程 一.发送消息到队列(生产者) 新建一个maven项目,在pom.xml文件加入以下依赖 <dependencies> <depe ...