通过ZomboDB Postgres扩展轻松集成Elasticsearch的Django
项目描述
通过ZomboDB Postgres扩展轻松集成Elasticsearch的Django。感谢ZomboDB,每次事务后,您的Django模型都会与Elasticsearch同步!搜索也非常简单:您只需通过调用您的查询集上的其中一个搜索方法即可执行Elasticsearch查询。再简单不过了!
文档
要求
Python: 3.5, 3.6, 3.7
Django: 2.0, 2.1, 2.2
Postgres 和 Elasticsearch:与ZomboDB当前要求相同
快速入门
安装ZomboDB(说明在此)
安装django-zombodb
pip install django-zombodb
将SearchQuerySet和ZomboDBIndex添加到您的模型中
from django_zombodb.indexes import ZomboDBIndex
from django_zombodb.querysets import SearchQuerySet
class Restaurant(models.Model):
name = models.TextField()
objects = models.Manager.from_queryset(SearchQuerySet)()
class Meta:
indexes = [
ZomboDBIndex(fields=[
'name',
]),
]
创建迁移
python manage.py makemigrations
将django_zombodb.operations.ZomboDBExtension()作为您刚刚创建的迁移的第一个操作
import django_zombodb.operations
class Migration(migrations.Migration):
dependencies = [
('restaurants', '0001_initial'),
]
operations = [
django_zombodb.operations.ZomboDBExtension(), # <<< here
]
运行迁移(Postgres用户必须是SUPERUSER以创建ZomboDB扩展)
python manage.py migrate
完成!现在您可以直接从模型中执行Elasticsearch查询
Restaurant.objects.filter(is_open=True).query_string_search("brazil* AND coffee~")
完整示例
查看https://github.com/vintasoftware/django-zombodb/tree/master/example
运行测试
您需要确保Elasticsearch和Postgres实例在默认端口上运行。另外,您需要安装ZomboDB。然后只需执行以下操作:
python runtests.py
安全
请查阅SECURITY.rst。如果您发现或认为发现了漏洞,请通过admin AT vinta.com.br与我们联系。
请避免在GitHub或其他公共网站上披露任何安全问题。我们将迅速解决任何可能存在的漏洞,并给予报告者(如果愿意)相应的信用。
商业支持
本项目由Vinta软件和其他贡献者维护。我们一直在寻找令人兴奋的工作,如果您需要任何商业支持,请随时与我们联系:contact@vinta.com.br
变更日志
0.3.0 (2019-07-18)
通过field_mapping参数在ZomboDBIndex上支持自定义Elasticsearch映射。
支持搜索方法上的limit参数。
0.2.1 (2019-06-13)
已移除对Python 3.4的支持。
添加了文档中缺失的导入。
0.2.0 (2019-03-01)
从ZomboDBIndex中移除了url参数。这简化了多个部署环境(本地、预发布、生产)的支持,因为ElasticSearch URL不会复制到迁移代码内部(参见问题#17)。
0.1.0 (2019-02-01)
首次发布于PyPI。