2015-08-09 109 views
1

我一直在使用solr作爲我的項目,但最近我遇到了Elasticsearch,這看起來非常有希望。我的項目需要處理嵌套文檔的能力,我想知道哪一個能更好地工作。 Solr最近剛剛添加了兒童文檔,但它與Elasticsearch的一樣好嗎? Elasticsearch可以同時對父項和子項執行查詢嗎?謝謝Solr vs Elasticsearch嵌套文檔

回答

1

我不知道Elastic Search,所以這總是50%的答案。 Solr與非規格化數據的效果最佳。然而,考慮到你嵌套了文件,你可以在兩種情況下使用的Solr:

  1. 查詢父,有子屬性
  2. 查詢一個父母的所有兒童。

您可以使用塊連接執行上述查詢。儘管你處理嵌套關卡,但solr內部管理它們是非規範化的。我的意思是,當一個父母有兩個孩子時,最終會得到三個solr中的高級文檔。並solr管理關係部分。

+1

再次感謝。我試過Elasticsearch,它的準確性遠遠落後於Solr。我會堅持Solr。 – Yangrui

2

我一直在研究這個主題最近和我的理解ElasticSearch使生活更容易處理嵌套的文檔,雖然Solr也支持嵌套(但在查詢中不太靈活)。

所以ElasticSearch的特點是:

  • 「無縫」支持嵌套:你不必改變你的 嵌套文檔的結構或添加特定的域。然而,你需要 在創建 指數

  • 在哪些領域嵌套的映射,表示支持以「嵌套」和「路徑」嵌套查詢:

  • 支持嵌套文檔聚合和過濾:還通過 「嵌套」和「路徑」。

使用Solr你必須:

  • 修改您schema.xml中通過添加_ _根場

  • 修改您的數據集,這樣父母和孩子文件將有具體區別字段,特別是子文檔表示兒童(詳見this question

  • 對嵌套文檔進行聚合和過濾可能會非常複雜,如果不是不可能的話。

另外,根本不支持嵌套字段。

最近的Solr版本(5.1及更高版本)最終可以配置爲支持嵌套(包括您必須更改輸入數據結構),但文檔不是很清楚,因爲Internet上沒有太多的信息,因爲這些功能是最近的。

底線是,在嵌套文檔的意義上,ElasticSearch可以完成Solr所能做的所有事情,甚至可以用更少的工作量和更平滑的學習曲線完成所有功能。因此,在這種情況下,使用ElasticSearch似乎更合理。

+0

聽起來不錯。會試試看! – Yangrui