python| Django Elasticsearch DSL
Django Elasticsearch DSL 介紹
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
- Django >= 1.11
- Python 2.7, 3.5, 3.6, 3.7
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)。
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
快速開始
安裝和配置
安裝 django-elasticsearch-dsl
1
|
pip install django-elasticsearch-dsl |
然後新增 django-elasticsearch-dsl 到 INSTALLED_APPS
1
|
INSTALLED_APPS = [
|
必須在django settings 中定義 ELASTICSEARCH_DSL
1
|
ELASTICSEARCH_DSL={
|
然後將ELASTICSEARCH_DSL傳遞到elasticsearch-dsl-py.connections.configure(詳細引數請看)。
### 生命要被索引的模型表
model.py
1
|
class NcInfo(models.Model):
|
要使該模型與Elasticsearch一起使用,請建立django_elasticsearch_dsl.Document的子類,在Document類中建立一個Index類以定義您的Elasticsearch索引,名稱,設定等,最後使用Registry.register_document裝飾器註冊該類。 它需要在您的應用目錄中的documents.py中定義Document類。
建立document.py
1
|
from django_elasticsearch_dsl import Document
|
遷移
要建立並填充Elasticsearch索引和對映,請使用search_index命令: