1

我正在使用NodeJS elasticsearch包與ElasticSearch進行交互。我有一個有file字段的文檔。我希望能夠將文件上傳到索引,但我發現的唯一方法是使用elasticsearch-mapper-attachment插件。如何在不使用Base64的情況下在ElasticSearch中索引二進制文件

問題是,如果我使用它,我必須加載內存中的整個文件,將其編碼到Base64,然後將字符串傳遞給ElasticSearch。

我希望能夠將流傳遞給ElasticSearch(引用任何二進制文件:pdf,xls,doc,ppt)。

+0

ES不會爲你做。你的文件有多大? – Val

+0

嗯所以唯一的方法是用base64字符串? 我不確定文件大小。比方說1GB,但如果有10000個用戶上傳了一個大文件,我不得不在內存中加載很多內容。 – diugalde

+0

您是否希望附件只是沿着索引存儲或實際索引並可搜索? – Andrey

回答

2

elasticsearch-mapper-attachment插件解析上傳的二進制文件,並使用內置的Tika提取器提取文本以進行進一步索引。

什麼是一些應用程序(例如搜索技術公司的Aspire) - 它們通過Tika在本地運行二進制文件,提取文本並僅將該文本上載到要索引的文檔中。

它可能不是你正在尋找的答案,但你真的只有兩個選擇 - 使用Elastic插件(並且在將文檔上傳到彈性文件之前,在yoru代碼中將二進制轉換爲base64),或者解析二進制文件並提取在您的代碼中輸入文字,然後將文本上傳到彈性文本。前者比較容易,後者可以讓你更好地控制過程

+0

在我的應用程序中使用Tika超出了範圍。我發現了一個相關的問題:https://github.com/elastic/elasticsearch-mapper-attachments/issues/146 顯然,他們不想從外部數據源使用文件。 – diugalde

+0

@Andrey,如果我使用Tika並將文檔內容作爲文本提取,那麼將該文本上傳到彈性文件將有任何限制?我的意思是說,如果pdf文件很大,那麼會出現一些問題? – AKS

+0

@AKS - 每個文檔的標準ES文檔大小限制爲2GB,因此除非您的pdf +所有其他字段小於2GB,否則您很好 – Andrey

相關問題