Django:在单个应用程序中使用 MySQL 和 ElasticSearch
Django: Use MySQL and ElasticSearch in single application
我想在单个 Django
应用程序中使用 MySQL
和 ElasticSearch
使用 Haystack
。我们的应用程序处理大量包含 300 多个表的关系数据,MySql 是服务该数据的最佳选择。但是我们想要快速搜索具有 1000 万行以上的表的几列。
在 Django 中是否可以使用 MySQL 作为主要数据存储并使用 ElasticSearch 进行搜索相关查询? 我在互联网上搜索但找不到任何相关信息。
- 如果是,应该怎么处理?任何相关链接或博客都会非常有帮助。
- 如果不是,替代方法应该是什么?
是的,这绝对有可能。我自己实现了带有 elasticSearch 后端和 mysql 数据库的 haystack。查看 haystack 文档作为起点
http://django-haystack.readthedocs.org/en/v2.4.1/tutorial.html
只需安装 haystack,将其添加到您已安装的应用程序中。然后你需要定义弹性搜索作为你的后端。
之后,创建搜索索引并添加要搜索的字段。
我不确定你的困惑是什么,通过教程,它非常简单。
是的,我们可以在单个 Django
项目中配置 MySQL
和 ElasticSearch
。首先从 pip
.
安装 django-haystack
和 pyelasticsearch
包
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>'
}
}
创建一个 class 继承 hystack.indexes.SearchIndex
和 hystack.indexes.Indexable
classes。在下面的示例代码中,索引是在 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 文档。
我想在单个 Django
应用程序中使用 MySQL
和 ElasticSearch
使用 Haystack
。我们的应用程序处理大量包含 300 多个表的关系数据,MySql 是服务该数据的最佳选择。但是我们想要快速搜索具有 1000 万行以上的表的几列。
在 Django 中是否可以使用 MySQL 作为主要数据存储并使用 ElasticSearch 进行搜索相关查询? 我在互联网上搜索但找不到任何相关信息。
- 如果是,应该怎么处理?任何相关链接或博客都会非常有帮助。
- 如果不是,替代方法应该是什么?
是的,这绝对有可能。我自己实现了带有 elasticSearch 后端和 mysql 数据库的 haystack。查看 haystack 文档作为起点 http://django-haystack.readthedocs.org/en/v2.4.1/tutorial.html
只需安装 haystack,将其添加到您已安装的应用程序中。然后你需要定义弹性搜索作为你的后端。 之后,创建搜索索引并添加要搜索的字段。 我不确定你的困惑是什么,通过教程,它非常简单。
是的,我们可以在单个 Django
项目中配置 MySQL
和 ElasticSearch
。首先从 pip
.
django-haystack
和 pyelasticsearch
包
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>'
}
}
创建一个 class 继承 hystack.indexes.SearchIndex
和 hystack.indexes.Indexable
classes。在下面的示例代码中,索引是在 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 文档。