0701-6.2.0-使用Solr7對結構化csv文件建立全文索引

  • 2019 年 10 月 5 日
  • 筆記

作者:余楓

文檔編寫目的

在上一篇《6.2.0-使用Solr7對多種格式文件建立全文索引》中介紹了如何在CDH6.2.0中使用Solr7對多種格式的文件進行全文索引,測試中使用的主要是非結構化的word、ppt、pdf等非結構化的數據,很多時候需要使用Solr對結構化的數據進行索引,根據其中某些欄位進行精準的查詢或者範圍查詢,本文檔將介紹如何使用Solr對csv文件建立全文索引。

  • 內容概述

1.準備測試數據

2.建立索引

3.進行查詢驗證

4.總結

  • 測試環境

1.CM和CDH版本為6.2.0

2.Solr版本為7.4.0

3.集群未啟用kerberos

4.採用root用戶

  • 前置條件

1.CDH集群已安裝成功並正常運行

2.集群已添加Solr服務

準備測試數據

1.本次測試準備生成一個1GB左右大小的csv文件,該數據文件共有十個欄位,其中有int、double、string、date以及中文文本和英文文本等類型,多一些數據類型方便測試,下面是生成數據的Java程式碼

https://github.com/fayson/cdhproject/blob/master/generatedata/src/main/java/com/cloudera/solr/GenerateSolrTestData.java  

生成的數據一共60W條,大小1.1GB,十個欄位分別為number,firstDouble,firstNo,secondDouble,secondNo,jarName,enText,cnText,firstTime,secondTime

建立索引

在Solr Web頁面,選擇左側的【Collections】,然後單擊【Add collection】。創建一個Collection

Collection創建成功

將準備好的csv文件導入到Solr中,Solr自帶的post.jar提供了這個功能,下面是post.jar的用法

參考help命令,使用下面的命令將csv文件導入到Solr中,並建立全文索引

java -Durl=http://localhost:8983/solr/test0723/update -Dtype=text/csv -Dc=test0723 -jar post.jar /tmp/solr/file/data.csv  

csv文件導入成功,下一步在Solr上進行查詢驗證

進行查詢驗證

1.進入query介面

2.根據單個欄位查詢

  • number
  • jarName
  • 時間欄位範圍查詢

3.根據英文文本中的內容查找

4.根據中文文本中的內容進行查找

5.使用欄位的組合進行查找

  • 在某個時間範圍內的number在1到10000之間的英文文本中包含Cloudera的記錄
  • 在number30000到40000的記錄中,firstDouble大於200,secondDouble小於500的記錄
  • jarName以spark開頭,且中文文本中包含「查詢」的記錄

總結

1.與上篇文檔中使用的dataimport的方式導入數據建立索引不同,本文檔使用Solr自帶的post.jar將csv文件導入並創建索引,經過查詢測試,該方式能夠正常使用。

2.Solr在使用時間格式進行查詢時,只能使用UTC格式,Solr只能識別這種格式的時間,例如2018-03-06T02:37:02Z。

3.在使用多條件查詢時,可以使用fq,在fq中可以添加多個檢索條件,其中範圍檢索可以使用{}、[]、TO搭配來實現,例如firstTime:[2018-01-01T00:00:00Z TO 2018-01-31T23:59:59Z],表示firstTime在1月1日到1月31日之間的數據。

4.Solr的query頁面還有許多參數可以使用,例如sort可以對欄位進行排序,start、rows可以定義分頁的數量,wt可以指定檢索結果的格式等等。

Fayson的github: https://github.com/fayson/cdhproject