我正在尝试在我的 Django 项目中使用 ElasticSearch 作为 NoSQL 数据库。
目标是在另一侧插入 Kibana
并能够在那里可视化我的数据。
我无法选择添加另一个数据库并仅使用 ElasticSearch 进行索引,因为我的项目正在插入现有基础架构。
所以我安装了以下两个模块:
- django-haystack
- Elasticsearch
我原以为不需要 SQLite(或任何其他数据库)进行存储,而是将 ElasticSearch 用作 NoSQL 存储(这是错误的吗?)
我将 Haystack 连接设置添加到我的项目设置中,然后试图摆脱“DATABASES”或将其替换为指向我的 ElasticSearch 的值,但没有成功:(
这是我坚持的:
设置.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 和代码片段中找到的所有答案,我永远不会看到这些 DATABASES 设置发生变化,所以我假设人们使用数据库进行存储,而 ElasticSearch 仅用于他们的搜索引擎/索引,这不是我想要的为。
有没有一种方法可以将 ElasticSearch 作为我的存储数据库(就像我使用 MongoDB 一样),而不破坏 Django 的模型和接口(interface)?
最佳答案
不可能(正式)使用 ElasticSearch 作为您的 django 数据库后端(我假设这就是您想要的)- 当前支持的后端是:
- PostgreSQL
- 数据库
- sqlite3
- 甲骨文
以上为官方名单,非官方(第3方)如下:
- SAP SQL
- IBM DB2
- 微软 SQL
- Firebird
- ODBC
无论如何,django 周围的人都是非常友善和勤奋的开发人员 :) 并且有相应的软件包(您可以尝试一下 - 以前从未使用过):
https://github.com/aparo/django-elasticsearch
还有一件事 - 为什么需要 Django? kibana 还不够吗?您要对 Django 应用程序中 ES 索引的数据进行一些更改吗?或者它应该只是只读的?
因为如果您想像普通
DB 存储一样使用 ES - 它不会工作,因为每次更新/插入数据时您将等待大约 1-2 秒,直到 ES 索引新数据.这不是 ES 的目的。
希望这对您有所帮助,编码愉快。
关于django - 使用 ElasticSearch 作为 Django 的数据库/存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40948923/