<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>简单之美 &#187; Category &#187; Solr/ElasticSearch</title>
	<atom:link href="http://shiyanjun.cn/archives/category/opensource/solr-elasticsearch/feed" rel="self" type="application/rss+xml" />
	<link>http://shiyanjun.cn</link>
	<description>简单之美，难得简单，享受简单的唯美。</description>
	<lastBuildDate>Wed, 04 Mar 2026 07:04:53 +0000</lastBuildDate>
	<language>zh-CN</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.9.2</generator>
	<item>
		<title>ElasticSearch-2.0.0集群安装配置与API使用实践</title>
		<link>http://shiyanjun.cn/archives/1371.html</link>
		<comments>http://shiyanjun.cn/archives/1371.html#comments</comments>
		<pubDate>Sat, 28 Nov 2015 02:06:38 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[ElasticSearch]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=1371</guid>
		<description><![CDATA[<p>ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎，我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用，都知道，Lucene只是一个搜索框架，它提供了搜索引擎操作的基本API，如果要实现一个能够使用的搜索引擎系统，还需要自己基于Lucene的API去实现，工作量很大，而且还需要很好地掌握Lucene的底层实现原理。
ElasticSearch是一个完整的分布式搜索引擎系统，它的一些基本特性包括如下：

全文检索
提供插件机制，可以共享重用插件的功能
分布式文件存储
分布式实时索引和搜索
实时统计分析
可以横向扩展，支持大规模数据的搜索
简单易用的RESTful API
基于Replication实现了数据的高可用特性
与其他系统的集成
支持结构化和非结构化数据
灵活的Schema设计（Mappings）
支持多编程语言客户端

我个人感觉，ElasticSearch尽量屏蔽底层Lucene相关的技术细节，让你根本无从感觉底层Lucene相关的内容，这样你可以省去了了解Lucene 的成本，学习曲线比较平缓，不像Solr，如果想要构造负责的查询（Query），还是要对Lucene有所了解的。另外，在分布</p>]]></description>
	<p>ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎，我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用，都知道，Lucene只是一个搜索框架，它提供了搜索引擎操作的基本API，如果要实现一个能够使用的搜索引擎系统，还需要自己基于Lucene的API去实现，工作量很大，而且还需要很好地掌握Lucene的底层实现原理。
ElasticSearch是一个完整的分布式搜索引擎系统，它的一些基本特性包括如下：

全文检索
提供插件机制，可以共享重用插件的功能
分布式文件存储
分布式实时索引和搜索
实时统计分析
可以横向扩展，支持大规模数据的搜索
简单易用的RESTful API
基于Replication实现了数据的高可用特性
与其他系统的集成
支持结构化和非结构化数据
灵活的Schema设计（Mappings）
支持多编程语言客户端

我个人感觉，ElasticSearch尽量屏蔽底层Lucene相关的技术细节，让你根本无从感觉底层Lucene相关的内容，这样你可以省去了了解Lucene 的成本，学习曲线比较平缓，不像Solr，如果想要构造负责的查询（Query），还是要对Lucene有所了解的。另外，在分布</p>			<content:encoded><![CDATA[<p>ElasticSearch是基于全文搜索引擎库Lucene构建的分布式搜索引擎，我们可以直接使用ElasticSearch实现分布式搜索系统的搭建与使用，都知道，Lucene只是一个搜索框架，它提供了搜索引擎操作的基本API，如果要实现一个能够使用的搜索引擎系统，还需要自己基于Lucene的API去实现，工作量很大，而且还需要很好地掌握Lucene的底层实现原理。
ElasticSearch是一个完整的分布式搜索引擎系统，它的一些基本特性包括如下：

全文检索
提供插件机制，可以共享重用插件的功能
分布式文件存储
分布式实时索引和搜索
实时统计分析
可以横向扩展，支持大规模数据的搜索
简单易用的RESTful API
基于Replication实现了数据的高可用特性
与其他系统的集成
支持结构化和非结构化数据
灵活的Schema设计（Mappings）
支持多编程语言客户端

我个人感觉，ElasticSearch尽量屏蔽底层Lucene相关的技术细节，让你根本无从感觉底层Lucene相关的内容，这样你可以省去了了解Lucene 的成本，学习曲线比较平缓，不像Solr，如果想要构造负责的查询（Query），还是要对Lucene有所了解的。另外，在分布</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/1371.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>基于Solr DIH实现MySQL表数据全量索引和增量索引</title>
		<link>http://shiyanjun.cn/archives/444.html</link>
		<comments>http://shiyanjun.cn/archives/444.html#comments</comments>
		<pubDate>Mon, 14 Oct 2013 16:06:49 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=444</guid>
		<description><![CDATA[<p>实现MySQL表数据全量索引和增量索引，基于Solr DIH组件实现起来比较简单，只需要重复使用Solr的DIH（Data Import Handler）组件，对data-config.xml进行简单的修改即可。Solr DIH组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler，在Solr的solrconfig.xml中配置两个handler，配置分别说明如下。
全量索引
solrconfig.xml配置如下：
上面这个是针对全量索引的，主要是配置data-config.xml文件，示例如下所示：
上面主要是通过内置变量 “${dataimporter.request.length}”和 “${dataimporter.request.offset}”来设置一个批次索引的数据表记录数，请求的URL示例如下：
上面表示，对数据表中id范围为[10000000, 1100000]的记录进行索引，因为数据表可能达到千万记录数，而且线上有业务在操作数据库，所以要选择分批进行索引。
增量索引
solrconfig.xml配置如下：
上面主要是通过内置变量“${dih.delta.id}”和 “${dih.last_index_time}”来记录本次索引的id和最后索引时间。这里，会保存在deltaimport.properties文件中，示例如下：
请求增量索</p>]]></description>
	<p>实现MySQL表数据全量索引和增量索引，基于Solr DIH组件实现起来比较简单，只需要重复使用Solr的DIH（Data Import Handler）组件，对data-config.xml进行简单的修改即可。Solr DIH组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler，在Solr的solrconfig.xml中配置两个handler，配置分别说明如下。
全量索引
solrconfig.xml配置如下：

     &lt;requestHandler name=&quot;/dataimport&quot;
          class=&quot;org.apache.solr.handler.dataimport.DataImportHandler&quot;&gt;
          &lt;lst name=&quot;defaults&quot;&gt;
               &lt;str name=&quot;config&quot;&gt;data-config.xml&lt;/str&gt;
          &lt;/lst&gt;
     &lt;/requestHandler&gt;

上面这个是针对全量索引的，主要是配置data-config.xml文件，示例如下所示：

 &lt;dataConfig&gt;
    &lt;dataSource name=&quot;jdbc&quot; driver=&quot;com.mysql.jdbc.Driver&quot;
        url=&quot;jdbc:mysql://172.0.8.249:5606/marketing_db_saved</p>			<content:encoded><![CDATA[<p>实现MySQL表数据全量索引和增量索引，基于Solr DIH组件实现起来比较简单，只需要重复使用Solr的DIH（Data Import Handler）组件，对data-config.xml进行简单的修改即可。Solr DIH组件的实现类为org.apache.solr.handler.dataimport.DataImportHandler，在Solr的solrconfig.xml中配置两个handler，配置分别说明如下。
全量索引
solrconfig.xml配置如下：
上面这个是针对全量索引的，主要是配置data-config.xml文件，示例如下所示：
上面主要是通过内置变量 “${dataimporter.request.length}”和 “${dataimporter.request.offset}”来设置一个批次索引的数据表记录数，请求的URL示例如下：
上面表示，对数据表中id范围为[10000000, 1100000]的记录进行索引，因为数据表可能达到千万记录数，而且线上有业务在操作数据库，所以要选择分批进行索引。
增量索引
solrconfig.xml配置如下：
上面主要是通过内置变量“${dih.delta.id}”和 “${dih.last_index_time}”来记录本次索引的id和最后索引时间。这里，会保存在deltaimport.properties文件中，示例如下：
请求增量索</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/444.html/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Solr DIH: 基于MySQL表数据建立索引</title>
		<link>http://shiyanjun.cn/archives/422.html</link>
		<comments>http://shiyanjun.cn/archives/422.html#comments</comments>
		<pubDate>Sat, 12 Oct 2013 07:48:43 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shiyanjun.cn/?p=422</guid>
		<description><![CDATA[<p>选择使用Solr，对数据库中数据进行索引，可以单独写程序将数据库中的数据导出并建立索引，这个过程可能对于数据处理的控制更灵活一些，但是却可能带来很大的工作量。选择使用Solr的DIH组件，可以很方便的对数据库表中数据进行索引，下面基于MySQL数据库实现建立索引。
首先，需要设计你的schema，最主要的工作是，将数据库表中字段映射为Lucene索引（Solr直接使用Lucene的索引格式和数据）的Field，从而将数据表中的一条记录映射为Lucene中的Document，然后进行索引。另外，在schema.xml配置文件中，还需要指定各个字段在索引数据中的属性信息（如是否索引、是否存储、是否分词、排序规则等），以及Field所使用的分析器、过滤器等。在schema.xml文件进行配置，下面是配置实例：
定义好上面的内容，就应该考虑从数据库表中如何查询出记录，然后通过处理进行索引。通常，对于已经存在的基于数据库的系统或应用，很可能需要对某些字段的值进行一些处理，然后再进行索引，使用Solr定义的一些组件，在一定程度上可以满足需要。比如，数据表中时间字段包含到毫秒，实际我们</p>]]></description>
	<p>选择使用Solr，对数据库中数据进行索引，可以单独写程序将数据库中的数据导出并建立索引，这个过程可能对于数据处理的控制更灵活一些，但是却可能带来很大的工作量。选择使用Solr的DIH组件，可以很方便的对数据库表中数据进行索引，下面基于MySQL数据库实现建立索引。
首先，需要设计你的schema，最主要的工作是，将数据库表中字段映射为Lucene索引（Solr直接使用Lucene的索引格式和数据）的Field，从而将数据表中的一条记录映射为Lucene中的Document，然后进行索引。另外，在schema.xml配置文件中，还需要指定各个字段在索引数据中的属性信息（如是否索引、是否存储、是否分词、排序规则等），以及Field所使用的分析器、过滤器等。在schema.xml文件进行配置，下面是配置实例：

&lt;?xml version=&quot;1.0&quot; ?&gt;
&lt;schema name=&quot;example core zero&quot; version=&quot;1.1&quot;&gt;
	&lt;types&gt;
		&lt;fieldtype name=&quot;int&quot; class=&quot;solr.IntField&quot; omitNorms=&quot;true&quot; /&gt;
		&lt;fieldtype name=&quot;stri</p>			<content:encoded><![CDATA[<p>选择使用Solr，对数据库中数据进行索引，可以单独写程序将数据库中的数据导出并建立索引，这个过程可能对于数据处理的控制更灵活一些，但是却可能带来很大的工作量。选择使用Solr的DIH组件，可以很方便的对数据库表中数据进行索引，下面基于MySQL数据库实现建立索引。
首先，需要设计你的schema，最主要的工作是，将数据库表中字段映射为Lucene索引（Solr直接使用Lucene的索引格式和数据）的Field，从而将数据表中的一条记录映射为Lucene中的Document，然后进行索引。另外，在schema.xml配置文件中，还需要指定各个字段在索引数据中的属性信息（如是否索引、是否存储、是否分词、排序规则等），以及Field所使用的分析器、过滤器等。在schema.xml文件进行配置，下面是配置实例：
定义好上面的内容，就应该考虑从数据库表中如何查询出记录，然后通过处理进行索引。通常，对于已经存在的基于数据库的系统或应用，很可能需要对某些字段的值进行一些处理，然后再进行索引，使用Solr定义的一些组件，在一定程度上可以满足需要。比如，数据表中时间字段包含到毫秒，实际我们</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/422.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SolrCloud 4.3.1+Tomcat 7安装配置实践</title>
		<link>http://shiyanjun.cn/archives/100.html</link>
		<comments>http://shiyanjun.cn/archives/100.html#comments</comments>
		<pubDate>Thu, 22 Aug 2013 14:54:58 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[SolrCloud]]></category>
		<category><![CDATA[Tomcat]]></category>

		<guid isPermaLink="false">http://shirdrn.org/?p=100</guid>
		<description><![CDATA[<p>我们使用Solr Replication可以实现Solr服务器的可用性，即使某一个索引副本由于磁盘介质故障或者误操作删除等，其他的多个复制副本仍然可以提供服务。如果只是单纯的基于Solr Replication技术，只能对一个索引进行管理维护，当索引数据达到一定规模，搜索的性能成了瓶颈，除了重新规划设计索引，实现逻辑划分以外，没有更好地方法实现查询服务器的可扩展性。
SolrCloud就是为了解决这个问题而提出的。SolrCloud通过ZooKeeper集群来进行协调，使一个索引（SolrCloud中叫做一个Collection）进行分片，各个分片可以分布在不同的物理节点上，而且，对于同一个Collection的多个分片（Shard）之间没有交集，亦即，多个物理分片组成一个完成的索引Collection。为了保证分片数据的可用性，SolrCloud自动支持Solr Replication，可以同时对分片进行复制，冗余存储。下面，我们基于Solr最新的4.3.1版本进行安装配置SolrCloud集群，通过实践来实现索引数据的分布存储和检索。
准备工作

服务器信息

三台服务器：

ZooKeeper集群配置

安装ZooKeeper集群，在上面3分节点上分别安</p>]]></description>
	<p>我们使用Solr Replication可以实现Solr服务器的可用性，即使某一个索引副本由于磁盘介质故障或者误操作删除等，其他的多个复制副本仍然可以提供服务。如果只是单纯的基于Solr Replication技术，只能对一个索引进行管理维护，当索引数据达到一定规模，搜索的性能成了瓶颈，除了重新规划设计索引，实现逻辑划分以外，没有更好地方法实现查询服务器的可扩展性。
SolrCloud就是为了解决这个问题而提出的。SolrCloud通过ZooKeeper集群来进行协调，使一个索引（SolrCloud中叫做一个Collection）进行分片，各个分片可以分布在不同的物理节点上，而且，对于同一个Collection的多个分片（Shard）之间没有交集，亦即，多个物理分片组成一个完成的索引Collection。为了保证分片数据的可用性，SolrCloud自动支持Solr Replication，可以同时对分片进行复制，冗余存储。下面，我们基于Solr最新的4.3.1版本进行安装配置SolrCloud集群，通过实践来实现索引数据的分布存储和检索。
准备工作

服务器信息

三台服务器：

10.95.3.61          master
10.95.3.62          slave1
10</p>			<content:encoded><![CDATA[<p>我们使用Solr Replication可以实现Solr服务器的可用性，即使某一个索引副本由于磁盘介质故障或者误操作删除等，其他的多个复制副本仍然可以提供服务。如果只是单纯的基于Solr Replication技术，只能对一个索引进行管理维护，当索引数据达到一定规模，搜索的性能成了瓶颈，除了重新规划设计索引，实现逻辑划分以外，没有更好地方法实现查询服务器的可扩展性。
SolrCloud就是为了解决这个问题而提出的。SolrCloud通过ZooKeeper集群来进行协调，使一个索引（SolrCloud中叫做一个Collection）进行分片，各个分片可以分布在不同的物理节点上，而且，对于同一个Collection的多个分片（Shard）之间没有交集，亦即，多个物理分片组成一个完成的索引Collection。为了保证分片数据的可用性，SolrCloud自动支持Solr Replication，可以同时对分片进行复制，冗余存储。下面，我们基于Solr最新的4.3.1版本进行安装配置SolrCloud集群，通过实践来实现索引数据的分布存储和检索。
准备工作

服务器信息

三台服务器：

ZooKeeper集群配置

安装ZooKeeper集群，在上面3分节点上分别安</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/100.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Solr实现SQL的查询与统计</title>
		<link>http://shiyanjun.cn/archives/78.html</link>
		<comments>http://shiyanjun.cn/archives/78.html#comments</comments>
		<pubDate>Wed, 21 Aug 2013 14:51:38 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>
		<category><![CDATA[SQL]]></category>

		<guid isPermaLink="false">http://shirdrn.org/?p=78</guid>
		<description><![CDATA[<p>Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala，只要熟悉SQL，就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。
下面，我们设计一个表，通过该表中的数据，来将SQL查询与统计的语句，使用Solr查询的方式来与SQL查询对应。这个翻译的过程，是非常有趣的，你可以看到Solr一些很不错的功能。
用来示例的表结构设计，如图所示：

下面，我们通过给出一些SQL查询统计语句，然后对应翻译成Solr查询语句，然后对比结果。
查询对比

条件组合查询

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
查询结果，如下所示：
对比上面结果，除了根据idt_id排序方式不同以外（Impala是升序，Solr是降序），其他是相同的。

单个字段分组统计

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
查询结果，如下所示：
对比查询结果，Solr提供了更多的统计项，如标准差（stddev）等，与SQL查询结果是一致的。

IN条件查询

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
或
查询结果，如下所</p>]]></description>
	<p>Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala，只要熟悉SQL，就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。
下面，我们设计一个表，通过该表中的数据，来将SQL查询与统计的语句，使用Solr查询的方式来与SQL查询对应。这个翻译的过程，是非常有趣的，你可以看到Solr一些很不错的功能。
用来示例的表结构设计，如图所示：

下面，我们通过给出一些SQL查询统计语句，然后对应翻译成Solr查询语句，然后对比结果。
查询对比

条件组合查询

SQL查询语句：

SELECT log_id,start_time,end_time,prov_id,city_id,area_id,idt_id,cnt,net_type
FROM v_i_event
WHERE prov_id = 1 AND net_type = 1 AND area_id = 10304 AND time_type = 1 AND time_id &gt;= 20130801 AND time_id &lt;= 20130815
ORDER BY log_id LIMIT 10;

查询结果，如图所示：

Solr查询URL：

http://slave1:8888/solr-cloud/i_event/select?q=*:*&amp;fl=log_id,start_time,end_time,prov_id,city_id,area_id,id</p>			<content:encoded><![CDATA[<p>Cloudera公司已经推出了基于Hadoop平台的查询统计分析工具Impala，只要熟悉SQL，就可以熟练地使用Impala来执行查询与分析的功能。不过Impala的SQL和关系数据库的SQL还是有一点微妙地不同的。
下面，我们设计一个表，通过该表中的数据，来将SQL查询与统计的语句，使用Solr查询的方式来与SQL查询对应。这个翻译的过程，是非常有趣的，你可以看到Solr一些很不错的功能。
用来示例的表结构设计，如图所示：

下面，我们通过给出一些SQL查询统计语句，然后对应翻译成Solr查询语句，然后对比结果。
查询对比

条件组合查询

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
查询结果，如下所示：
对比上面结果，除了根据idt_id排序方式不同以外（Impala是升序，Solr是降序），其他是相同的。

单个字段分组统计

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
查询结果，如下所示：
对比查询结果，Solr提供了更多的统计项，如标准差（stddev）等，与SQL查询结果是一致的。

IN条件查询

SQL查询语句：
查询结果，如图所示：

Solr查询URL：
或
查询结果，如下所</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/78.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Solr自动生成ID配置实践</title>
		<link>http://shiyanjun.cn/archives/66.html</link>
		<comments>http://shiyanjun.cn/archives/66.html#comments</comments>
		<pubDate>Wed, 21 Aug 2013 13:00:05 +0000</pubDate>
		<dc:creator><![CDATA[Yanjun]]></dc:creator>
				<category><![CDATA[Solr/ElasticSearch]]></category>
		<category><![CDATA[开源技术]]></category>

		<guid isPermaLink="false">http://shirdrn.org/?p=66</guid>
		<description><![CDATA[<p>Solr基于Lucene的索引，而索引中的最基本的单元式Document，在Solr中，管理每一个Document（更新、删除、查询），基本都会用到对应的ID，类似关系数据表中的主键。但是，如果我希望Solr能够自动生成这个唯一的ID，有时候也省去了不少的工作，而只需要在Solr中进行配置即可。
下面，通过实例来说明，如何配置Solr支持的UUID。首先，示例的schema.xml对应的表结构，如图所示：

在Solr中配置生成唯一UUID，需要修改两个配置文件：

schema.xml

schema.xml文件的配置内容，增加如下类型配置：
再增加ID字段的类型，如下所示：
这样还不够，还需要指定在更新索引的时候，使用这个更新策略，即配置一个requestHandler元素。

solrconfig.xml

配置solrconfig.xml文件，修改更新索引的requestHandler 配置，内容如下所示：
上面的update.chain就是我们实际要指定的使用UUID进行更新的策略的配置，如下所示：
经过上面两步配置，在进行索引的时候，就不需要指定Document所要求的ID了，完全有Solr自动生成这个ID字符串。下面看看，我们配置后，生成的Document的信息，示例如</p>]]></description>
	<p>Solr基于Lucene的索引，而索引中的最基本的单元式Document，在Solr中，管理每一个Document（更新、删除、查询），基本都会用到对应的ID，类似关系数据表中的主键。但是，如果我希望Solr能够自动生成这个唯一的ID，有时候也省去了不少的工作，而只需要在Solr中进行配置即可。
下面，通过实例来说明，如何配置Solr支持的UUID。首先，示例的schema.xml对应的表结构，如图所示：

在Solr中配置生成唯一UUID，需要修改两个配置文件：

schema.xml

schema.xml文件的配置内容，增加如下类型配置：

&lt;fieldType name=&quot;uuid&quot; class=&quot;solr.UUIDField&quot; indexed=&quot;true&quot; /&gt;

再增加ID字段的类型，如下所示：

&lt;field name=&quot;id&quot; type=&quot;uuid&quot; indexed=&quot;true&quot; stored=&quot;true&quot; multiValued=&quot;false&quot; required=&quot;true&quot; /&gt;

这样还不够，还需要指定在更新索引的时候，使用这个更新策略，即配置一个requestHandler元素。

solrconfig.xml

配置solrconfig.xml文件，修改更新索</p>			<content:encoded><![CDATA[<p>Solr基于Lucene的索引，而索引中的最基本的单元式Document，在Solr中，管理每一个Document（更新、删除、查询），基本都会用到对应的ID，类似关系数据表中的主键。但是，如果我希望Solr能够自动生成这个唯一的ID，有时候也省去了不少的工作，而只需要在Solr中进行配置即可。
下面，通过实例来说明，如何配置Solr支持的UUID。首先，示例的schema.xml对应的表结构，如图所示：

在Solr中配置生成唯一UUID，需要修改两个配置文件：

schema.xml

schema.xml文件的配置内容，增加如下类型配置：
再增加ID字段的类型，如下所示：
这样还不够，还需要指定在更新索引的时候，使用这个更新策略，即配置一个requestHandler元素。

solrconfig.xml

配置solrconfig.xml文件，修改更新索引的requestHandler 配置，内容如下所示：
上面的update.chain就是我们实际要指定的使用UUID进行更新的策略的配置，如下所示：
经过上面两步配置，在进行索引的时候，就不需要指定Document所要求的ID了，完全有Solr自动生成这个ID字符串。下面看看，我们配置后，生成的Document的信息，示例如</p>]]></content:encoded>
			<wfw:commentRss>http://shiyanjun.cn/archives/66.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
