elasticsearch,django-orm,django-haystack,Python,Django,elasticsearch,Django Orm,Django Haystack" /> elasticsearch,django-orm,django-haystack,Python,Django,elasticsearch,Django Orm,Django Haystack" />

Python Django:在单个应用程序中使用MySQL和ElasticSearch

Python Django:在单个应用程序中使用MySQL和ElasticSearch,python,django,elasticsearch,django-orm,django-haystack,Python,Django,elasticsearch,Django Orm,Django Haystack,我想在单个Django应用程序中使用MySQL和ElasticSearch使用Haystack。我们的应用程序处理一组包含300多个表的庞大关系数据,MySql是最好的选择。但是我们需要快速搜索几列1000多万行的表 在Django是否可以使用MySQL作为主要数据存储并使用ElasticSearch进行搜索相关查询?我在互联网上搜索过,但找不到任何相关信息 如果是,应采用什么方法?任何相关链接或博客都将非常有用 如果不是,那么替代方法应该是什么 是的,这是绝对可能的。我已经用elasticS

我想在单个
Django
应用程序中使用
MySQL
ElasticSearch
使用
Haystack
。我们的应用程序处理一组包含300多个表的庞大关系数据,MySql是最好的选择。但是我们需要快速搜索几列1000多万行的表

在Django是否可以使用MySQL作为主要数据存储并使用ElasticSearch进行搜索相关查询?我在互联网上搜索过,但找不到任何相关信息

  • 如果是,应采用什么方法?任何相关链接或博客都将非常有用
  • 如果不是,那么替代方法应该是什么

  • 是的,这是绝对可能的。我已经用elasticSearch后端和mysql数据库实现了haystack。从haystack文档开始看一看

    只需安装haystack,将其添加到已安装的应用程序中即可。然后,您需要将弹性搜索定义为后端。 然后,创建搜索索引并添加要搜索的字段。
    我不确定您的困惑是什么,请通读本教程,它非常简单。

    是的,我们可以在单个
    Django
    项目中配置
    MySQL
    ElasticSearch
    。首先从
    pip
    安装
    django haystack
    pyelasticsearch
    软件包

    sudo pip install django-haystack
    sudo pip install pyelasticsearch 
    
    settings.py
    中,将
    'haystack'
    添加到
    已安装的应用程序中,并进行如下配置:


    有关更多详细信息,请参阅文档。

    当然可以。为什么不可能呢?你对什么“方法”感到困惑?
    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>'
            }
        }
    
    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