solr索引庫新增新的索引,使用json檔案或者xml檔案的資料
solr索引庫新增新的索引,可以在使用dataimport外掛進行定時增量插入。
也可以使用外部資料封裝到json檔案或者xml檔案中進行增量新增,二者的區別就是使用的包不同,json檔案格式使用fastJson包,xml檔案格式使用dom4j包
這裡我們只演示新增json格式檔案,xml檔案格式的雷同。
需要的軟體支援
JDK1.8以上
Solr6.0
Eclipse 4.5
solr-solrj-6.0.0.jar
fastjson-1.2.7.jar
JSON文件轉換為Java物件
我準備了一段JSON資料,儲存在cd.json文件中。[
{
"TITLE": "皇帝諷刺劇",
"ARTIST": "鮑勃·迪倫",
"COUNTRY": "美國",
"COMPANY": "哥倫比亞",
"PRICE": "10.90",
"YEAR": "1985",
"DESCRIPTION": "夏天的午後聽Bob Dylan的歌特別容易被催眠"
},
{
"TITLE": "隱藏自己的心",
"ARTIST": "邦尼泰勒",
"COUNTRY": "英國",
"COMPANY": "哥倫比亞廣播公司",
"PRICE": "9.90",
"YEAR": "1988",
"DESCRIPTION": "對未來,永遠抱著樂觀與喜悅的態度"
},
{
"TITLE": "精選輯",
"ARTIST": "桃莉·巴頓",
"COUNTRY": "美國",
"COMPANY": "美國無線電公司",
"PRICE": "9.90",
"YEAR": "1982",
"DESCRIPTION": "美國曆史上最暢銷的錄音室唱片"
},
{
"TITLE": "依然憂鬱",
"ARTIST": "蓋瑞摩爾",
"COUNTRY": "英國",
"COMPANY": "維京唱片",
"PRICE": "10.20",
"YEAR": "1990",
"DESCRIPTION": "在聽到他們的現場之後,會愛上這些老男人的聲音"
},
{
"TITLE": "厄洛斯",
"ARTIST": "艾羅斯雷瑪若提",
"COUNTRY": "歐盟",
"COMPANY": "貝塔斯曼音樂集團",
"PRICE": "9.90",
"YEAR": "1997",
"DESCRIPTION": "這張專輯以希臘神話中的人物為音樂背景,突顯了希臘作為一個文明古國所擁有的很深厚的文化積澱"
},
{
"TITLE": "僅此一夜",
"ARTIST": "比吉斯樂隊",
"COUNTRY": "英國",
"COMPANY": "環球唱片",
"PRICE": "10.90",
"YEAR": "1998",
"DESCRIPTION": "青春活力十足,主唱聲線可塑性強"
},
{
"TITLE": "麥其·梅",
"ARTIST": "羅德·斯圖爾特",
"COUNTRY": "英國",
"COMPANY": "匹克威克",
"PRICE": "8.50",
"YEAR": "1990",
"DESCRIPTION": "作者是最有才華的詞曲作者之一,是二十世紀六十年代中期的英國入侵浪潮之後的標誌性人物之一。"
},
{
"TITLE": "浪漫曲",
"ARTIST": "安德烈·波伽利",
"COUNTRY": "歐盟",
"COMPANY": "環球唱片",
"PRICE": "10.80",
"YEAR": "1996",
"DESCRIPTION": "獨一無二的聲音的力量、那令人難以抗拒的溫暖的感覺,這使得語言和文化都不再是阻擋交流的障礙。"
},
{
"TITLE": "當男人愛上女人",
"ARTIST": "普西·斯樂巨",
"COUNTRY": "美國",
"COMPANY": "大西洋",
"PRICE": "8.70",
"YEAR": "1987",
"DESCRIPTION": "他無法假裝若無其事,他會用全世界來交換,只為了他找到的好東西.即使她很壞,他也看不見,她不會有錯,他會背棄他最要好"
},
{
"TITLE": "美好時光",
"ARTIST": "肯尼·羅傑斯",
"COUNTRY": "英國",
"COMPANY": "Mucik Master",
"PRICE": "8.70",
"YEAR": "1995",
"DESCRIPTION": "這哥們的歌都是自覺自發熱愛自己一畝三分地的城市貧民心聲,毫無怨言。永遠歡樂,永遠飛的大。"
},
{
"TITLE": "大丈夫日記",
"ARTIST": "威爾·史密斯",
"COUNTRY": "美國",
"COMPANY": "哥倫比亞",
"PRICE": "9.90",
"YEAR": "1997",
"DESCRIPTION": "這個還真紐約那種感覺,特派對,流說。而且陣容強大,真正的全能明星。"
}
]
讀取JSON檔案資料類:ReadJSONFile.Java
package com.trainning.project.json;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
public class ReadJSONFile {
/**
* 將json檔案資料讀取到記憶體
* @param filepath
* @return json string
*/
public static String readFile(String filepath){
String json = "";
try {
File file = new File(filepath);
FileInputStream fis = new FileInputStream(file);
InputStreamReader isInputStreamReader = new InputStreamReader(fis, "UTF-8");
BufferedReader brReader = new BufferedReader(isInputStreamReader);
String line;
while((line = brReader.readLine()) != null){
json += line;
}
brReader.close();
isInputStreamReader.close();
} catch (Exception e) {
e.printStackTrace();
}
return json;
}
}
將json資料轉化為java物件,我這裡使用到了阿里巴巴的fastjson,這是一個開源專案,號稱有最快的解析速度,可以方便地進行序列化和反序列化操作。 建立javabean: CDBean.java
package com.trainning.project.json;
public class CDBean {
private String title;
private String artist;
private String country;
private String company;
private double price;
private String year;
private String description;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getArtist() {
return artist;
}
......
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "CD :[title=" + title + ", artist=" + artist + ", country=" + country + ", company=" + company
+ ", price=" + price + ", year=" + year + ", description=" + description + "]";
}
}
轉化JSON資料:ConvertJSON.javapackage com.trainning.project.json;
import java.util.List;
import com.alibaba.fastjson.JSON;
public class ConvertJSON {
public static List<CDBean> jsonToList(String json){
//把JSON文字parse成JavaBean集合
List<CDBean> list = JSON.parseArray(json,CDBean.class);
//列印一下list的內容,除錯時用
list.stream().forEach(System.out::println);
return list;
}
}
使用SolrJ將List資料匯入到Solr資料庫
新建一個檔案SolrPublisher.java
package com.trainning.project.json;
import java.util.List;
import java.util.UUID;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.common.SolrInputDocument;
public class SolrPublisher {
public static final String SOLR_URL = "http://localhost:8080/solr/core0";
private HttpSolrClient client;
public SolrPublisher() {
client = new HttpSolrClient(SOLR_URL);
}
public void insertDataToSolr() throws Exception{
String filepath = "src/main/java/com/trainning/project/json/cd.json";
String json = ReadJSONFile.readFile(filepath);
List<CDBean> list = ConvertJSON.jsonToList(json);
client.deleteByQuery("*:*");//清空solr中原有資料,增量新增不需要清空
for(CDBean cd : list){
SolrInputDocument input = new SolrInputDocument();
//ID是資料的主鍵,原則上必須指定,並且不能重複。便於資料管理,如刪除操作
input.addField("id", UUID.randomUUID().toString(), 1.0f);
//這裡的addField方法第一個引數需要在core0/conf/managed-schema中有對應的field
//引數使用的是managed-schema中有對應的field:<dynamicField name="*_s" type="string" indexed="true" stored="true"/>
//這個引數採用萬用字元的方式,指定一個string型別的欄位
input.addField("title_s", cd.getTitle());
input.addField("artist_s", cd.getArtist());
input.addField("country_s", cd.getCountry());
input.addField("company_s", cd.getCompany());
input.addField("price_d", cd.getPrice());
input.addField("year_s", cd.getYear());
input.addField("description_s", cd.getDescription());
client.add(input);
}
//不能忘記提交
client.commit();
}
/**
* 使用main方法測試整個插入過程是否能成功
*/
public static void main(String[] args) {
SolrPublisher publisher = new SolrPublisher();
try {
publisher.insertDataToSolr();
} catch (Exception e) {
e.printStackTrace();
}
}
}
檢視Solr中的資料
直接使用http方式來查詢solr中的資料。訪問: http://localhost:8080/solr/core0/select?q=* : *
最後,你可以在這裡 或https://github.com/cj96248/solr找到專案的原始碼
相關文章
- Solr json,xml等檔案資料匯入(新增索引)linux下操作SolrJSONXML索引Linux
- ES讀取Json檔案新增索引JSON索引
- 給XML檔案新增新的節點XML
- 為資料庫新增控制檔案資料庫
- .NET操作XML檔案---[新增]XML
- 將資料庫中資料匯入至solr索引庫資料庫Solr索引
- 資料檔案offline後unusable索引造成的問題索引
- 建立資料庫檔案-日誌檔案-次要資料庫檔案資料庫
- 叢集資料庫新增控制檔案資料庫
- 索引器的妙用,讀取配置檔案索引
- 資料庫引數檔案控制檔案日誌檔案資料檔案跟蹤檔案等8大檔案的字典資料庫
- 使用curl向Solr匯入json檔案(Windows、Linux均可)SolrJSONWindowsLinux
- 使用xml檔案,做資料的匯入,匯出 (轉)XML
- MySQL8.0.18資料庫新增資料檔案MySql資料庫
- Lucene 2.0 對 html檔案建立索引的bugHTML索引
- 資料庫檔案和檔案組資料庫
- 如何將 JSON, Text, XML, CSV 資料檔案匯入 MySQLJSONXMLMySql
- Bookshelf - Library Mac(檔案索引工具)Mac索引
- dirlisting目錄檔案列表索引索引
- 如何將plist檔案或者陣列NSArray轉化為.json檔案?陣列JSON
- 利用java建立檔案或者資料夾Java
- DG備庫手動管理 新增資料檔案
- Oracle資料庫新增和移動控制檔案Oracle資料庫
- oracle資料庫的配置檔案Oracle資料庫
- 資料庫檔案的遷移資料庫
- 表空間新增資料檔案的疑惑
- dataguard新增臨時資料檔案的bug
- oracle資料庫移動資料檔案、日誌檔案和控制檔案Oracle資料庫
- 使用 Java 解析XML檔案JavaXML
- MySQL資料庫的套接字檔案和pid檔案MySql資料庫
- 還原sqlserver資料庫備份檔案.bak的檔案SQLServer資料庫
- xml檔案XML
- solr總結 第五部分:solr為資料庫建立索引Solr資料庫索引
- 12c pdb線上移動資料檔案或者重新命名資料檔案
- Linux--檔案描述符、檔案指標、索引節點Linux指標索引
- Git使用教程2:版本庫的建立和新增檔案Git
- 如何恢復在全備後新增了資料檔案的資料庫資料庫
- xml是什麼格式的檔案 xml檔案怎麼開啟XML