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 ...
随机推荐
- Java加密、解密Word文档
对一些重要文档,我们为保证其文档内容不被泄露,常需要对文件进行加密,查看文件时,需要正确输入密码才能打开文件.下面介绍了一种比较简单的方法给Word文件添加密码保护以及如何给已加密的Word文件取消密 ...
- Asp.net Core 系列之--1.事件驱动初探:简单事件总线实现(SimpleEventBus)
ChuanGoing 2019-08-06 前言 开篇之前,简单说明下随笔原因.在园子里游荡了好久,期间也起过要写一些关于.NET的随笔,因各种原因未能付诸实现. 前段时间拜读daxnet的系列文章 ...
- 最新JetBrains PyCharm 使用教程--安装教程(一)
安装过程 Pycharm 激活码 license server选项里边输入:http://intellij.mandroid.cn/
- 每天3分钟操作系统修炼秘籍(13):两个缓冲空间Kernel Buffer和IO Buffer
两个缓冲空间:kernel buffer和io buffer 先看一张图,稍后将围绕这张图展开描述.图中的fd table.open file table以及两个inode table都可以不用理解, ...
- Linux命令实战(四)
1.Linux上的文件管理类命令都有哪些,其常用的使用方法及相关示例演示. 文件或目录的新建 touch :将每个文件的访问时间和修改时间修改为当前时间.若文件不存在将会创建为空文件,除非使用-c或- ...
- Phone Code
Polycarpus has n friends in Tarasov city. Polycarpus knows phone numbers of all his friends: they ar ...
- (二十一)golang--字符串中的函数
golang中ascii对应的字符占一个字节,而汉字占三个字节. (1)统计字符串的长度len (2)字符串遍历,同时处理有中文的问题r:=[]rune(str) (3)字符串转整数:n,err:= ...
- [spark程序]统计人口平均年龄(HDFS文件)(详细过程)
一.题目描述 (1)请编写Spark应用程序,该程序可以在分布式文件系统HDFS中生成一个数据文件peopleage.txt,数据文件包含若干行(比如1000行,或者100万行等等)记录,每行记录只包 ...
- js中call、apply和bind到底有什么区别?
介绍 在js中,每个函数的原型都指向Function.prototype对象(js基于原型链的继承).因此,每个函数都会有apply,call,和bind方法,这些方法继承于Function. 它们的 ...
- 彻底搞懂CSS伪类选择器:is、not
本文介绍一下Css伪类:is和:not,并解释一下is.not.matches.any之前的关系 :not The :not() CSS pseudo-class represents element ...