2013-06-18 34 views
1

我正在考慮使用ElasticSearch作爲大型對象的搜索引擎。單臺機器上有大約5億個物體。迄今爲止,Elasticsearch是執行高級查詢的一個很好的解決方案。但是,有一個問題,我找到了任何技術來在文檔字段上創建二級索引。在elasticsearch中是否有可能在列上創建MySQL中的二次缺陷?還是有沒有其他技術可以加速對字段值的搜索?我使用的是單個服務器環境,我必須每行/對象存儲大約300個字段。目前,我的數據庫中有大約5億個對象。ElasticSearch:使用Java-API的字段值的輔助indecies

感謝先進!

回答

1

我很抱歉,我不明白這個問題。 Elasticsearch本身就是一個基於索引的技術(它建立在Lucene之上,這是一個基於索引的搜索構建)。您將文檔放入Elasticsearch中,並在這些文檔的各個字段中建立索引並進行搜索。您不必擔心創建二級索引;這些字段默認會被索引(大多數情況下)。

Elasticsearch和Solr之間的區別之一是,在Solr中,您必須指定一個模式,以定義文檔中字段的內容以及該字段是否會被索引(可用於搜索),存儲(可作爲搜索結果)或兩者兼而有之。 Elasticsearch不需要前期模式,而是代替字段的特定映射,然後使用合理的默認值。我相信核心字段(字符串,數字等)是默認索引的,這意味着它們可用於搜索。

現在在你的情況下,你有一個文件上有很多字段。您可能需要稍微調整映射,以僅索引您可能搜索的字段。如果索引過多,索引本身的大小會膨脹,並且不會像僅知道您將搜索的字段的修剪索引那樣快。此外,Lucene將部分索引加載到內存中,以確保快速搜索。如果索引臃腫,則無法在內存中保留更多內容,因此搜索將受到影響。您應該查看Mappings APICore Types部分以瞭解有關如何執行此操作的更多信息。

+0

這似乎是我想要做的正確的想法。由於關於索引(在elasticsearch上下文中)和關係數據庫中的索引的混淆,我重讀了映射的東西。設置屬性索引=「分析」似乎是正確的方法。不過,我仍然陷入上述問題。經過一些研究後,我發現了一種改變映射的方法,但它似乎完全沒有影響,我不知道我做錯了什麼。有誰能夠幫助我? – Perditor