【问题标题】:Using ElasticSearch as Database/Storage with Django使用 ElasticSearch 作为 Django 的数据库/存储
【发布时间】:2017-04-18 08:25:15
【问题描述】:

我正在尝试在我的 Django 项目中使用 ElasticSearch 作为 NoSQL 数据库。 目标是在另一端插入Kibana,并能够在那里可视化我的数据。

我无法选择添加另一个数据库并仅使用 ElasticSearch 进行索引,因为我的项目正在插入现有基础架构。

所以我安装了以下两个模块:

  • django 干草堆
  • 弹性搜索

我原以为不需要 SQLite(或任何其他数据库)进行存储并将 ElasticSearch 用作 NoSQL 存储(这错了吗?)

我将 Haystack 连接设置添加到我的项目设置中,然后寻找摆脱“数据库”或将其替换为指向我的 ElasticSearch 的值但没有成功:(

这就是我所坚持的:

settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://127.0.0.1:9200/',
        'INDEX_NAME': 'haystack'
    },
}

在我可以在 StackOverflow 和代码 sn-ps 上找到的所有答案中,我永远不会看到这些 DATABASES 设置发生更改,所以我假设人们使用数据库进行存储,而 ElasticSearch 仅用于他们的搜索引擎/索引,这不是我的正在寻找。

有没有一种方法可以让 ElasticSearch 作为我的存储数据库(就像我使用 MongoDB 一样),而不破坏 Django 的模型和界面?

【问题讨论】:

    标签: django database elasticsearch


    【解决方案1】:

    不可能(官方)使用 ElasticSearch 作为您的 django 数据库后端(我认为这就是您想要的) - 当前支持的后端是:

    • postgresql
    • mysql
    • sqlite3
    • 神谕

    以上为官方名单,非官方(第3方)如下:

    • SAP SQL
    • IBM DB2
    • 微软 SQL
    • 火鸟
    • ODBC

    无论如何,django 周围的人都是非常友善且努力工作的开发人员 :) 并且有相应的软件包(您可以尝试一下 - 以前从未使用过):

    https://github.com/aparo/django-elasticsearch

    还有一件事——你为什么需要 django? kibana还不够吗?你会在你的 Django 应用程序中对 ES 索引上的数据进行一些更改吗?还是应该只是只读的?

    因为如果您想像normal DB 存储一样使用 ES - 它不会起作用,因为每次更新/插入数据时您将等待大约 1-2 秒,直到 ES 索引新数据。这不是 ES 的目的。

    希望对您有所帮助,祝您编码愉快。

    【讨论】:

    • 所以,我的 Django 项目围绕两个应用程序进行了阐述,它们从 GitHub API 提取数据并在将其放入数据库之前进行解析。目的是能够可视化指标,深入了解 GitHub 在大公司中的使用 :) 数据库将仅由正在侦听所有 repos 中的新提交/问题的 Bot 使用
    • Nice :) 所以基本上我认为你不需要 django。也许是整个 Elastic 堆栈?也许您将能够配置 logstash 以提供您的弹性搜索索引,然后在 kibana 中创建一个指标?
    • 这看起来很好,但我想在将它们转储到数据库之前解析消息并应用一些认知逻辑,甚至使用一些自然语言处理,所以我仍然想使用 Django :) 什么然而,这向我展示了我可以添加一个指向我的 Django API 的钩子:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-11-14
    • 2017-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多