91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • (solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據

(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據

發布時間:2020-06-16 09:54:02 來源:網絡 閱讀:2884 作者:興趣e族 欄目:數據庫

在前面的博文中,已完成了在tomcat中對solr的部署,為solr添加了一個自定義的core,并且引入了ik分詞器。

那么該如何將本地的mysql的數據導入到solr中呢?

準備工作:

1、mysql數據源:myuser庫中的user表(8條數據),其中這個updateTime字段是用于solr更新數據庫數據的依據,表中必須得有這個字段。

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50521
Source Host           : localhost:3306
Source Database       : user

Target Server Type    : MYSQL
Target Server Version : 50521
File Encoding         : 65001

Date: 2016-10-21 10:14:01
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  `password` varchar(255) NOT NULL,
  `updateTime` datetime DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', '張三', 'abc', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('2', '李四', 'def', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('3', '王五', 'ghi', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('4', '趙六', 'jkl', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('5', '田七', 'mno', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('6', '老八', 'pqr', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('7', '金九', 'stu', '2016-10-21 10:10:58');
INSERT INTO `user` VALUES ('8', '銀十', 'vwx', '2016-10-21 10:10:58');

2、數據源配置文件:新建文件:data-config.xml,文件內容如下

<dataConfig>
	<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
		url="jdbc:mysql://localhost:3306/myuser" user="root" password="root"
		batchSize="100" />
	<document>
		<entity name="user" pk="id"
			query="SELECT id,name,password,updateTime FROM user"
			deltaImportQuery="SELECT id,name,password,updateTime FROM user where id='${dataimporter.delta.id}'"
			deltaQuery="SELECT id FROM user where updateTime > '${dataimporter.last_index_time}'">
			<field column="id" name="id" />
			<field column="name" name="name" />
			<field column="password" name="password" />
			<field column="updateTime" name="updateTime" />
		</entity>
	</document>
</dataConfig>

3、mysql驅動jar包和solr導入數據所需的jar包:mysql-connector-java-5.1.32.jar(這個大家都有) 和 solr-dataimporthandler-4.10.2.jar(這個在solr-4.10.2\dist目錄下可以找到,復制出來一個即可)

====================================================================================

準備工作完成之后就可以進行配置和操作了。

步驟一:將剛才準備的那兩個jar包復制到apache-tomcat-7.0.72\webapps\solr\WEB-INF\lib目錄下。


步驟二:將準備的data-config.xml文件復制到solrhome\simple\conf目錄下,和schema.xml同一目錄。


步驟三:在solrhome\simple\conf目錄下找到solrconfig.xml文件,為該文件添加如下內容:

 <requestHandler name="/dataimport" 
 class="org.apache.solr.handler.dataimport.DataImportHandler">
	<lst name="defaults">
	     <str name="config">data-config.xml</str>
	</lst>
  </requestHandler>

步驟四:在solrhome\simple\conf目錄下找到schema.xml文件,打開并修改如下:

<?xml version="1.0" encoding="UTF-8" ?>
<schema name="example" version="1.5">
	<!--定義type類型-->
  <types>
		<fieldType name="string" class="solr.StrField"
			sortMissingLast="true" />	
		<fieldType name="long" class="solr.TrieLongField"
			precisionStep="0" positionIncrementGap="0"/>			
		<fieldType name="int" class="solr.TrieIntField"
			precisionStep="0" positionIncrementGap="0" />
		<fieldType name="date" class="solr.TrieDateField"
			precisionStep="8" positionIncrementGap="0" />
		<fieldType name="text_ik" class="solr.TextField">
			<analyzer class="org.wltea.analyzer.lucene.IKAnalyzer" />
		</fieldType>
  </types>
  <!--定義字段-->
	<fields>
		<field name="_version_" type="long" indexed="true" stored="true" />
		<field name="_root_" type="string" indexed="true" stored="false" />
		<field name="id" type="int" indexed="true" stored="true"
			required="true" multiValued="false" />
		<!--注意:這里的field中的name要和data-config.xml中的name對應-->
		<!--字段為name的type類型可以是string-->
		<field name="name" type="text_ik" indexed="true" stored="true" />
		<field name="password" type="string" indexed="true" stored="true" />
		<field name="updateTime" type="date" indexed="true" stored="true" />
	</fields>
	<uniqueKey>id</uniqueKey>
	<solrQueryParser defaultOperator="AND" />
</schema>

步驟四:啟動tomcat,瀏覽器訪問:locahost:8080/solr 原來的simple中數沒有任何數據的。

(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據


步驟五:導入mysql數據到solr中


(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據

再次查看數據,如果顯示如下,那么恭喜你,數據導入成功!

(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據



=====================================================================================

如果想刪除solr中導入的數據該如何操作,一上圖就……了然(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據

(solr系列:四)將mysql數據庫中的數據導入到solr中及刪除solr中導入的數據xml命令:

1、根據查詢刪除:刪除所有數據

<delete><query>*:*</query></delete>
<commit/>

當然,上面說的是手動刪除,如果要刪除的數據很多,想在下一次自動同步數據的時候自動刪除指定的數據該如何做呢?

場景:有一批要拍賣的店鋪數據存儲在solr中,拍賣的店鋪數據有一個拍賣結束時間(endTime),當拍賣結束時間一到,這條存儲在solr中的拍賣數據就沒有意義了,想要刪除這條存儲在solr中的數據。

按照上面的手動刪除也不是不可以,但這人工操作未免太扯了,到時間人工去solr中刪除這條數據耗時又耗力,也不太現實。

解決辦法就是:

    在data-config.xmlentity中添加:

deletedPkQuery="select id from shops  where endTime &lt; NOW()"

這一句,這句和entiy的query同級,目的是查詢出所有店鋪數據中結束時間小于當前時間的店鋪id,

這個店鋪id會和deltaQuery中收集到的id一并執行deltaImportQuery操作,只不過一個是添加數據,一個是刪除數據。


如果是其他業務場景也可以借鑒下這篇博客中在表中添加isdelete字段的方式完成刪除,其實只要有一個字段能夠標識就行:

參考地址:http://simplelife.blog.51cto.com/9954761/1883024 

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

桐城市| 射洪县| 铜川市| 土默特右旗| 双城市| 手游| 琼结县| 赤壁市| 伊金霍洛旗| 宜兰县| 黄石市| 石屏县| 邹城市| 青铜峡市| 全椒县| 霍邱县| 通许县| 永登县| 峡江县| 随州市| 德化县| 来安县| 邵武市| 五华县| 桃江县| 建水县| 江陵县| 商洛市| 建阳市| 澳门| 赫章县| 沂水县| 育儿| 松潘县| 南京市| 郧西县| 阜新| 福鼎市| 和田市| 尚义县| 如皋市|