python| Django Elasticsearch DSL
2021-03-12 06:29
标签:应用 ice api number app 快速 registry targe django信号 Django Elasticsearch DSL是一个软件包,允许在elasticsearch中索引Django模型。它是作为Elasticsearch-dsl-py的封装而构建的, 因此您可以使用elasticsearch-dsl-py团队开发的所有功能。 您可以在https://django-elasticsearch-dsl.readthedocs.io上查看完整文 基于elasticsearch-dsl-py,因此您可以使用Search类进行查询。 Django信号接收器处于保存和删除状态,以保持Elasticsearch同步。 从Django模型字段中的Elasticsearch自动映射。 复杂字段类型支持(ObjectField,NestedField)。 使用并行索引快速建立索引。 Requirements Elasticsearch兼容性:该库与5.x以后的所有Elasticsearch版本兼容,但是您必须使用匹配的主要版本: 对于Elasticsearch 7.0及更高版本,请使用该库的主要版本7(7.x.y)。 对于Elasticsearch 6.0及更高版本,请使用该库的主要版本6(6.x.y)。 对于Elasticsearch 5.0和更高版本,请使用库的主要版本0.5(0.5.x)。 安装 django-elasticsearch-dsl 然后添加 django-elasticsearch-dsl 到 INSTALLED_APPS 必须在django settings 中定义 ELASTICSEARCH_DSL 然后将ELASTICSEARCH_DSL传递到elasticsearch-dsl-py.connections.configure(详细参数请看)。 ### 生命要被索引的模型表 model.py 要使该模型与Elasticsearch一起使用,请创建django_elasticsearch_dsl.Document的子类,在Document类中创建一个Index类以定义您的Elasticsearch索引,名称,设置等,最后使用Registry.register_document装饰器注册该类。 它需要在您的应用目录中的documents.py中定义Document类。 创建document.py 要创建并填充Elasticsearch索引和映射,请使用search_index命令: python| Django Elasticsearch DSL 标签:应用 ice api number app 快速 registry targe django信号 原文地址:https://www.cnblogs.com/huangjiangyong/p/14089113.html
Django Elasticsearch DSL 介绍
特性
1
2
3
4
5
6
7
8
# Elasticsearch 7.x
elasticsearch-dsl>=7.0.0,8.0.0
# Elasticsearch 6.x
elasticsearch-dsl>=6.0.0,7.0.0
# Elasticsearch 5.x
elasticsearch-dsl>=0.5.1,6.0.0快速开始
安装和配置
1
pip install django-elasticsearch-dsl
1
2
3
INSTALLED_APPS = [
‘django_elasticsearch_dsl‘,
]
1
2
3
4
5
ELASTICSEARCH_DSL={
‘default‘: {
‘hosts‘: ‘localhost:9200‘
},
}
1
2
3
4
5
class NcInfo(models.Model):
cluster = models.CharField(max_length=12, verbose_name=‘用户名‘)
ip = models.GenericIPAddressField(verbose_name=‘IP地址‘)
desc = models.CharField(max_length=128, verbose_name=‘简介‘)
instance_id = models.CharField(max_length=64, verbose_name=‘实例id‘)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from django_elasticsearch_dsl import Document
from django_elasticsearch_dsl.registries import registry
from .models import NcInfo
@registry.register_document
class NcInfoDocument(Document):
class Index:
# es 索引名
name = ‘ncinfo‘
# 有关可用设置,请参阅Elasticsearch Indices API参考。
settings = {‘number_of_shards‘: 1,
‘number_of_replicas‘: 0}
class Django:
model = NcInfo # 与此文档关联的模型
# 要在Elasticsearch中建立索引的模型的字段
fields = [
‘cluster‘,
‘ip‘,
‘instance_id‘,
]
# 保存模型时忽略弹性搜索的自动更新
# or deleted:
# ignore_signals = True
# 每次更新后都不要执行索引刷新(覆盖全局设置):
# auto_refresh = False
# 对django查询集进行分页,该查询集用于以指定大小填充索引
#(默认情况下,它使用数据库驱动程序的默认设置)
# queryset_pagination = 5000迁移
上一篇:Java获取不到请求的真实IP
文章标题:python| Django Elasticsearch DSL
文章链接:http://soscw.com/essay/63556.html