elasticsearch,Django,Database,elasticsearch" /> elasticsearch,Django,Database,elasticsearch" />

通过Django使用ElasticSearch作为数据库/存储

通过Django使用ElasticSearch作为数据库/存储,django,database,elasticsearch,Django,Database,elasticsearch,我试图在Django项目中使用ElasticSearch作为NoSQL数据库。 最终目标是在另一边插入Kibana,并能够在那里可视化我的数据 我没有选择添加另一个数据库和仅使用ElasticSearch进行索引,因为我的项目正在插入现有的基础设施 所以我安装了: django haystack elasticsearch 我原以为存储不需要SQLite(或任何其他数据库),而是使用ElasticSearch作为NoSQL存储(错了吗?) 我将Haystack connections设置添加到我

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

我没有选择添加另一个数据库和仅使用ElasticSearch进行索引,因为我的项目正在插入现有的基础设施

所以我安装了:

django haystack elasticsearch

我原以为存储不需要SQLite(或任何其他数据库),而是使用ElasticSearch作为NoSQL存储(错了吗?)

我将Haystack connections设置添加到我的项目设置中,然后,尝试摆脱“数据库”或用指向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和代码片段上我能找到的所有答案中,我永远不会看到这些数据库设置发生更改,因此我假设人们使用数据库进行存储,而ElasticSearch仅用于搜索引擎/索引,这不是我要找的

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

感谢您的帮助

不可能(正式)使用ElasticSearch作为django数据库后端(我假设这是您想要的)-当前支持的后端包括:

  • postgresql
  • mysql
  • sqlite3
  • 神谕
以上为官方名单,非官方(第三方)名单如下:

  • SAP SQL
  • IBM DB2
  • 微软SQL
  • 火鸟
  • ODBC
不管怎么说,django周围的人都是非常友好和勤奋的开发人员:)并且有一个软件包(您可以尝试一下-以前从未使用过):

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

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


希望这有帮助,快乐编码。

因此,我的Django项目阐述了两个应用程序,它们从GitHub API提取数据,并在将数据放入数据库之前进行解析。其目的是能够可视化指标,深入了解GitHub在大公司中的使用:)DB将仅由一个在所有reposNice中侦听新提交/问题的Bot使用:)因此基本上我认为您不需要django。也许整个弹性堆叠?也许你可以配置logstash来输入你的elasticsearch索引,然后在kibana中创建一个度量?@Daniel请看一看:这看起来很好,但我想在将消息转储到数据库之前解析消息并应用一些认知逻辑,甚至使用了一些自然语言处理,所以我仍然希望使用Django:)但这表明我可以添加一个指向Django API的钩子:)