2016-03-14 57 views
0

我是apache solr的新手。使用apache solr創建動態構面

我已經上傳使用Solr的細胞數的日誌文件,我想在此基礎上有沒有在日誌文件中的內容創建方面。

例如:在我的日誌文件中我有一個事務記錄,我想創建transactionid作爲我的方面並單擊它應該導致在上傳的日誌文件中搜索並根據該特定ID給出結果。

注:我需要小場根據這是在日誌中的內容。

+0

如果我已經正確理解了這一點,那麼您基本上不知道什麼是前期的,您想要面向哪個領域,是嗎? –

+0

正是因爲我上傳日誌文件應該根據日誌文件中的內容創建動態方面(如transactionId的) – sudha

回答

2

只要該字段已編入索引,您就可以在其上進行操作。因此,您可以使用無模式配置,也可以使用dynamicField定義來匹配日誌記錄並自動創建字段。

首先查看Solr的例子,那裏應該有足夠的信息。

(基於註釋更新) 如果文本需要進行預處理和分割,有兩種基本途徑:

  1. 使用DataImportHandler(DIH),可能與LineEntityProcessorRegexTransformer分裂現場分爲多個字段
  2. 使用UpdateRequestProcessor鏈(solrconfig.xml中),可能克隆領域多次,然後用RegexReplaceProcessorFactory提取相關零部件。這比DIH更醜陋,因爲沒有簡單的方法將一個領域分爲多個領域。

仍然,專門爲日誌,最好使用像Logstash with Solr output plugin之類的東西。

+0

我的問題是,如果我有一個假設文本文件,並在它的內容是「2016年2月25日18: 05:44821 [Web容器:6] DEBUG [74311F40D97148,USER_ID:EXAMINER6] - com.apache.org.plm.usersearch.client.UserSearchAPI - {LOG屬性:ProcessTime:0毫秒,COMPONENT_NAME:USERSEARCH,TransRefGUID:7431C9280D97148,USER_ID:EXAMINER6 ,}調用代理..............「,如果我有索引它,那麼我只需要Examiner作爲我的方面或TransRefGUID作爲我的方面。對於這種類型,我們有任何解決方案solr – sudha

+0

這看起來像日誌文件的內容。這意味着它需要被解析並分割成字段。你可以用Solr中的正則表達式來完成,但這不是最好的路徑。您應該查看日誌解析解決方案,這些解決方案通常會提供給其他產品,包括Solr。或者查看專注於日誌文件處理,索引和搜索的Elastic(搜索)堆棧。 –

+0

可否請讓我知道我們如何通過使用正則表達式來做到這一點......確切地說,我需要做出改變? – sudha

0

+1給Alex的回答。

另一種方法是編寫要小面的,並明確該字段添加到您的文檔什麼字段,您想出一個自定義更新的處理器。 只有基於某種模式知道期望的字段類型時,這纔有意義。如果情況並非如此,那麼使用動態字段或無模式配置是最好的選擇。

+0

我嘗試索引內容並將其添加爲一個方面,但創建了許多不相關的方面(即使它從內容中挑選),我甚至不需要它。你能否澄清如何使它成爲可能..因爲我已經提到了文檔,但是這個功能可以幫助我 – sudha

+0

你必須在你的日誌中識別模式,也就是說,如果有任何開始。一旦你這樣做,你可以使用正則表達式來提取相關字段併爲它們編制索引。 –

+0

請問你可以引用一個例子來說明如何使用正則表達式來提取相關的字段和索引他們。假設我已經確定了模式? – sudha