2016-03-07 35 views
3

我想在單個Django應用程序中使用MySQLElasticSearch使用Haystack。我們的應用程序處理300多個表格的大量關係數據,MySql是最好的選擇。但是我們希望快速搜索具有10百萬行的幾列表格。Django:在單個應用程序中使用MySQL和ElasticSearch

在Django中可以使用MySQL作爲主數據存儲並使用ElasticSearch進行搜索相關查詢嗎?我在互聯網上搜索,但無法找到任何相關信息。

  • 如果是,應該是什麼辦法?任何相關的鏈接或博客將非常有幫助。
  • 如果不是,應該採用哪種替代方法?
+0

是的,當然。爲什麼不可能?你困惑什麼「方法」? –

回答

0

是的,我們可以在一個Django項目中配置MySQLElasticSearch。首先從pip安裝django-haystackpyelasticsearch包。

sudo pip install django-haystack 
sudo pip install pyelasticsearch 

settings.py,添加'haystack'INSTALLED_APPS和配置HAYSTACK_CONNECTIONS,如:

HAYSTACK_CONNECTIONS = { 
    'default': { 
     'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 
     'URL': 'http://<ip-of-redis-server>:9200/', 
     'TIMEOUT': 60 * 5, 
     'INCLUDE_SPELLING':True, 
     'INDEX_NAME': '<name-of-index>' 
     } 
    } 

創建一個類繼承hystack.indexes.SearchIndexhystack.indexes.Indexable類。在下面的示例代碼,索引在MyModelClass模型的字段創建:

from haystack import indexes 


class MyIndexClass(indexes.SearchIndex, indexes.Indexable): 
    field_1 = indexes.CharField(document=True, use_template=True) 
    field_2 = indexes.CharField(model_attr='field_of_MyModelClass_class') 
    field_3 = indexes.CharField(model_attr='field_of_MyModelClass_class') 

def get_model(self): 
    return MyModelClass 

參考進一步的細節HayStack文檔。

1

是的,這是完全可能的。我已經使用elasticSearch後端和mysql數據庫自己實現了乾草堆。看看乾草堆文檔作爲起點 http://django-haystack.readthedocs.org/en/v2.4.1/tutorial.html

只需安裝草垛,將其添加到您的已安裝的應用程序。然後,您需要將彈性搜索定義爲您的後端。 之後,創建搜索索引並添加要搜索的字段。 我不確定你的困惑是什麼,通過教程,它非常簡單。

相關問題