for (final ShardIterator shardIt : shardsIts) { shardIndex++; final ShardRouting shard = shardIt.nextOrNull(); if (shard != null) { performFirstPhase(shardIndex, shardIt, shard); } else { // really, no shards active in this group onFirstPhaseResult(shardIndex, null, null, shardIt, new NoShardAvailableActionException(shardIt.shardId())); } }
对每一个shard调用performFirstPhase,
查看performFirstPhase, 最终会调用sendExecuteFirstPhase,并添加了ActionListener, 如果成功则执行onResponse里的onFirstPhaseResult, 在onFirstPhaseResult里有个判断, if (xTotalOps == expectedTotalOps),当所有shard都执行完后,执行innerMoveToSecondPhase, 最终执行moveToSecondPhase
defdetail_route(methods=['get'], **kwargs): """ Used to mark a method on a ViewSet that should be routed for detail requests. """ defdecorator(func): func.bind_to_methods = methods func.detail = True func.kwargs = kwargs return func return decorator
There is a problem here, the first time you run the script, it can't selectanydatafromtable, it have two solutions here:
1.in another script, dofull-import, later you can use the incremental script toselect incremental data 2.define a statefile.jsonfilebefore the firsttime you run the incremental script, set the lastexecutionstart to0, so that you can select all the datafromtable.
<dataConfig> <dataSourcetype="JdbcDataSource" driver="com.mysql.jdbc.Driver" url="jdbc:mysql://localhost/blog" user="blog" password="12345678"/> <document> <entityname="post"pk="ID" query="select ID,post_title,post_content from wp_posts where post_status='publish'" deltaImportQuery="select ID,post_title,post_content from wp_posts where ID='${dih.delta.ID}'" deltaQuery="select ID from wp_posts where post_status='publish' and post_modified_gmt > '${dih.last_index_time}'"> <fieldcolumn="ID"name="id"/> <fieldcolumn="post_title"name="title"/> <fieldcolumn="post_content"name="content"/> </entity> </document> </dataConfig>
在solrconfig.xml增加 <lib dir="${solr.install.dir:../../../..}/dist/" regex="solr-dataimporthandler-.*\.jar" />,这样就不会报solr.Dataimport Class not found error.
#Written by CorePropertiesLocator #Wed Mar 2310:55:00 UTC 2016 numShards=1 collection.configName=blog #name=blog_shard1_replica1 shard=shard1 collection=blog coreNodeName=core_node1