1. 程式人生 > >solr連線資料庫,實現資料定時同步(個人專案經驗)

solr連線資料庫,實現資料定時同步(個人專案經驗)

在專案開發過程中為了提高查詢效率和降低資料庫的壓力,因此此時就將查詢量大的資料放到solr中,查詢從solr中執行,不走資料庫,但是資料庫資料修改後怎麼辦呢,此時就要實現solr連線資料庫,實現資料的定時同步,保證資料的一致性。

solr的搭建看我另一篇部落格吧http://blog.csdn.net/millery22/article/details/51446014,直接進入主題。

第一步:新增data-config.xml配置檔案並編輯內容,這個檔案和schema.xml在同一級目錄:

<dataConfig> 

    <dataSourcetype="JdbcDataSource" driver="com.mysql.jdbc.Driver"url="jdbc:mysql://192.168.10.100:3306/shopmm" user="root"password="123456" />  

    <document> 

        <entity name="shops"pk="shops"  

       query="SELECT id,spTitle,updateTimeFROM shops"  

       deltaImportQuery="SELECTid,spTitle,updateTime FROM shops where UserID='${dih.delta.id}'"  

       deltaQuery="SELECT id FROM shopswhere updateTime > '${dataimporter.last_index_time}'"> 

            <field column="id"name="id"/>  

            <fieldcolumn="spTitle" name="spTitle"/>  

            <fieldcolumn="updateTime" name="updateTime"/> 

        </entity> 

    </document> 

</dataConfig>

第二步:在solrconfig.xml配置檔案中引入data-config.xml檔案。將下面的內容放到solrconfig.xml即可。

<requestHandler name="/dataimport"class="org.apache.solr.handler.dataimport.DataImportHandler">

<lst name="defaults">

  <strname="config">data-config.xml</str>

</lst>

</requestHandler>

第三步:在schema.xml配置需要匯入的欄位。如下:

<field name="id" type="long" indexed="true" stored="true" required="true" multiValued="false" /> 
 <field name="title" type="text_ik" indexed="true" stored="true"/>
 <field name="updateTime" type="date" indexed="false" stored="true"/>   
 <uniqueKey>id</uniqueKey>
</pre><p><span style="font-size:18px;">這裡我只給欄位和主鍵的配置,其他檔案頭,資料型別等的配置就不多說了。</span></p><p><span style="font-size:18px;">到這裡,配置就完成大部分了,可以使用連結的方式同步資料,但是這種方式很不靈活,每次修改完資料,還要訪問這個連結完成同步,但是地址貼在下面,可以用來測試自己上面的配置有沒有成功。</span></p><p><span style="font-size:18px;">全量匯入:http:// 192.168.10.100:8080/solr/core/dataimport?command=full-import&clean=false&commit=true</span></p><p><span style="font-size:18px;">增量匯入:http:// 192.168.10.100:8080/solr/core/dataimport?command=full-import&clean=false&commit=true</span></p><p><span style="font-size:18px;">上面的連結多了core,這個是我自定義的一個core,沒有使用預設的collection1。</span></p><p><span style="font-size:18px;">第四步:配置定時自動配置,這個配置需要比較細心,這一步說完我會在後面說注意事項,希望博友看完這步別急動手操作,先看看注意事項,百利無一害。</span></p><p><span style="font-size:18px;">在solrhome下建立一個conf目錄,然後將solr-dataimportscheduler-1.1.jar解壓,將解壓出來的dataimport.properties檔案複製到conf目錄下,對檔案進行修改。</span></p><pre name="code" class="plain">#################################################

#                                              #

#       dataimport scheduler properties         #

#                                              #

#################################################

 

#  to sync or not to sync

#  1 - active; anything else - inactive

# 這裡的配置不用修改

syncEnabled=1

 

#  which cores to schedule

#  in a multi-core environment you can decidewhich cores you want syncronized

#  leave empty or comment it out if usingsingle-core deployment

#  修改成你所使用的core,我這裡是我自定義的core

syncCores=core

 

#  solr server name or IP address

#  [defaults to localhost if empty]

#  這個一般都是localhost不會變

server=localhost

 

#  solr server port

#  [defaults to 80 if empty]

#  安裝solr的tomcat埠,如果你使用的是預設的埠,就不用改了,否則你懂的

port=8080

 

#  application name/context

#  [defaults to current ServletContextListener'scontext (app) name]

#  這裡預設不改

webapp=solr

 

#  URL params [mandatory]

#  remainder of URL

#  這裡要改成下面的形式

params=/dataimport?command=delta-import&clean=false&commit=true

 

#  schedule interval

#  number of minutes between two runs

#  [defaults to 30 if empty]

#  這裡是設定定時任務的,單位是分鐘,也就是多長時間你檢測一次資料同步,根據專案需求修改

#  開始測試的時候為了方便看到效果,時間可以設定短一點

interval=1

 

#  重做索引的時間間隔,單位分鐘,預設7200,即1天;

#  為空,為0,或者註釋掉:表示永不重做索引

reBuildIndexInterval=7200

 

#  重做索引的引數

reBuildIndexParams=/select?qt=/dataimport&command=full-import&clean=true&commit=true

 

#  重做索引時間間隔的計時開始時間,第一次真正執行的時間=reBuildIndexBeginTime+reBuildIndexInterval*60*1000;

#  兩種格式:2012-04-11 03:10:00 或者  03:10:00,後一種會自動補全日期部分為服務啟動時的日期

reBuildIndexBeginTime=03:10:00


改檔案配置結束後,再在solr的web.xml檔案的web-app標籤下新增下面的子標籤。

<listener>      

<listener-class>      

org.apache.solr.handler.dataimport.scheduler.ApplicationListener      

</listener-class>      

</listener>


這個配置檔案配結束後,將剛才的solr-dataimportscheduler-1.1.jar架包拷貝到tomcat下solr/WEB-INF/lib目錄下,此時可能覺得就會結束了。但是還是看看下面的注意事項吧。

注意事項:

1、 solr-dataimportscheduler-1.1.jar架包是1.1版本的,使用1.1版本會出現Unsupported Media Type異常,不能使用增量匯入功能。

2、 在增量匯入的連結上拼接了一個clean=false,之前看網上提供的連結是clean=true,我再使用的時候會出現資料庫的單條資料修改,在執行增量匯入的時候,會將solr中的資料清空,只保留修改的那一條資料。

3、 這裡的solrhome目錄就是在catalina.in中配置的-Dsolr.solr.home後面的目錄。

祝各位博友配置的時候能順利完成,有什麼問題別忘了提問,大家一起討論哦!

相關推薦

solr連線資料庫實現資料定時同步(個人專案經驗)

在專案開發過程中為了提高查詢效率和降低資料庫的壓力,因此此時就將查詢量大的資料放到solr中,查詢從solr中執行,不走資料庫,但是資料庫資料修改後怎麼辦呢,此時就要實現solr連線資料庫,實現資料的定時同步,保證資料的一致性。 solr的搭建看我另一篇部落格吧http:/

【ASP.NET】GridView連線資料庫顯示資料

前端 1、新增控制元件GridView,新增資料來源,接著按步驟選擇自己的資料庫 新增資料來源顯示資料有倆種方法: (1)一種方法是在GridView控制元件上直接按步驟新增資料來源,及設計想要顯

連線資料庫的工具類實現資料的插入

一、建立連線資料庫的工具類 package util; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class DbUtil {

使用 PyMySQL 連線資料庫實現簡單的增刪改查

首先需要 import pymysql 1.連線資料庫 #獲取資料庫連線 def getDBConn(): conn = pymysql.connect( host = 'localhost', port = 3306, user = 'root', password

如何實現sqlserver中的部分表的資料定時同步到oracle

下載網站:www.SyncNavigator.CN   ---------------------------------------------------------- HKROnline SyncNavigator 8.4.1 非破解版 註冊機 授權啟用教程

JDBC的API在class中連線資料庫得到需要的資料查詢資料

api: 1,java.sql.Connection 資料庫連線 提供了訪問資料庫的連線物件 2 , java.sql.Statement Statement 主要用於載入sql 3 , java.sql.ResultSet 書寫: String driver=com.mysql.jdb

servlet入門:前端操作結合資料庫實現資料庫部門表單資料改功能

第一個完整的web probject,值得記錄下來的一點心得; 還是老規矩,不囉嗦,直接上程式碼; 第一部分:建立一個web project ,匯入jar包,配置檔案等; 配置檔案部分: <?xml version="1.0" encoding="UTF

IDEA java連線mysql資料庫實現資料庫的增刪改查

先上程式碼: package Database_Demo; import java.sql.*; public class DataBase { public static void main(String[] args) { Connect

Navicat 連線mysql資料庫資料顯示亂碼

解決方法: 1.navicat裡右擊一個連線,選擇連線屬性,切換到高階選項卡,去掉“使用mysql字符集”前的對勾,在編碼裡選擇utf-8,這種方法對於部分問題可能適合。 2.可能是mysql的配置檔案有問題,就是在mysql 的安裝目錄下的my.ini檔案

PowerDesigner連線oracle資料庫oracle資料匯入PowerDesigner

問題描述:由於很多資料庫都是用toad在oracle上建立的,但現在要把相應的表匯入到PowerDesigner中。 解決方法:介於現在很多人很多時候在建資料庫時都是用toad直接在oracle上建的。但需要用到關係圖時,又得一個表一個表的手動匯入到Powerdesigne

PLSQL連線本地oracle或遠端oracle資料庫實現隨意切換

前言 本文主要講述如何連線本地oracle資料庫或者遠端oracle資料庫,實現隨意切換。 注:首先下載64位oracle以及32位輕量級客戶端(注意版本的對應,我用的是11g的oracle和11.2的客戶端): 以下步驟請自行更改路徑,不然,出錯了別怪我哦: s

JS實現簡單的登入介面(不連線資料庫把使用者名稱密碼寫死)

今天做專案的時候碰到這個問題, 看上去很簡單寫個js函式就行了, 實際好像沒那麼好操作, 用window.location.href=""行不通呀, 得用window.document.f.action="user3.jsp";window.document.f.submi

PHPStorm 配置遠端伺服器資料夾在本地windows映象實現程式碼自動同步(類似於Samba架構檔案同步功能)

場景介紹:這是一種類似samba架構,也和 filezilla+xshell 模式相類似的程式碼檔案同步的模式,但是卻更加優雅,也更加方便簡潔。環境介紹:本地windows端:編輯器phpstorm遠端Linux端:centos(香港節點伺服器)LNMP一、實現檔案同步1、在

python連線oracel資料庫提取資料後製圖並通過郵件傳送

總體要求:                通過python自動從oracle提取原始資料,對原始資料製圖,併發送郵件。發郵件時,通過oracle提取的資料儲存為excel作為附件傳送,圖片及相關文字內容通過郵件正文傳送。 =========================

基於分散式關係型資料庫實現輕鬆應對百億級資料分析場景解決方案

MyCat是什麼? 從定義和分類來看,它是一個開源的分散式資料庫系統,是一個實現了MySQL協議的伺服器,前端使用者可以把它看作

python操作資料庫實現使用者名稱、密碼登入資料庫首次登入自行設定密碼並返回工資表明細。

python操作資料庫,實現使用者名稱、密碼登入資料庫,首次登入自行設定密碼,並返回工資表明細。 1 #!/usr/bin/env python3 2 # -*- coding: utf-8 -*- 3 4 # 匯入依賴包 5 import psycopg2 6 7 print("營

rsync+inotify實現資料實時同步

主伺服器192.168.222.4 CentOS7 從伺服器192.168.222.5 CentOS6 實時同步/home/data1目錄到從伺服器 從伺服器192.168.222.5操作 # yum -y install rsync* 建立rsyncd.conf檔案 vim /et

pymysql連線資料庫讀取表內容

python中有MySQLdb、pymysql等資料庫模組,本文用pymysql模組連線mysql資料庫,並且讀取資料庫表 看過其他博文的介紹,把程式和資料庫比作兩個目的地,將遊標比喻成運輸貨車 很是形象生動! 我用的是Anaconda的編輯器spyder,首先要先下載pymysql模組到本地才能匯

eclipse+tomcat搭建伺服器遇到的坑:執行整個專案不能連線資料庫單獨的測試類卻能夠連線資料庫

我的連線資料庫類中的URL長這樣的: 這個類其他的程式碼都沒有問題,因為我用測試類測試過這個連線數庫類,能夠成功連線。mysql-conntector版本和mysql版本也能夠相容,其他的類也都沒問題,因為整個專案能夠執行。但是執行專案一涉及資料庫就報錯。我的之前在捕獲異常的時候在catc

python3 django框架開發(二) 連線資料庫建表

轉載請註明:https://blog.csdn.net/weixin_40490238/article/details/84573309 安裝pymysql包,點選settings 查詢pymysql,點選install package 開啟settings.p