【问题标题】:Django: Use MySQL and ElasticSearch in single applicationDjango:在单个应用程序中使用 MySQL 和 ElasticSearch
【发布时间】:2016-06-21 06:05:52
【问题描述】:

我想在单个Django 应用程序中使用Haystack 来使用MySQLElasticSearch。我们的应用程序处理包含 300 多个表的大量关系数据,MySql 是最好的选择。但我们希望快速搜索几列超过 1000 万行的表格。

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

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

【问题讨论】:

  • 是的,当然。为什么不可能?你对什么“方法”感到困惑?

标签: python django elasticsearch django-orm django-haystack


【解决方案1】:

是的,这是绝对可能的。我自己用 elasticSearch 后端和 mysql DB 实现了 haystack。看看 haystack docs 作为起点 http://django-haystack.readthedocs.org/en/v2.4.1/tutorial.html

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

【讨论】:

    【解决方案2】:

    是的,我们可以在单个 Django 项目中配置 MySQLElasticSearch。首先从pip安装django-haystackpyelasticsearch包。

    sudo pip install django-haystack
    sudo pip install pyelasticsearch 
    

    settings.py中,将'haystack'添加到INSTALLED_APPS并配置HAYSTACK_CONNECTIONSlike:

    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 文档了解更多详情。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-02
      • 2017-01-27
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多