40 lines
1.2 KiB
Python
40 lines
1.2 KiB
Python
from django_elasticsearch_dsl import Document, fields, Index
|
||
from .models import AchievementData, User, ElasticNews
|
||
from .indexes import INDEX_NAME
|
||
|
||
ACHIEVEMENT_INDEX = Index(INDEX_NAME)
|
||
ACHIEVEMENT_INDEX.settings(number_of_shards=1, number_of_replicas=0)
|
||
|
||
USER_INDEX = ACHIEVEMENT_INDEX
|
||
|
||
|
||
|
||
@ACHIEVEMENT_INDEX.doc_type
|
||
class AchievementDocument(Document):
|
||
"""获奖数据文档映射"""
|
||
writer_id = fields.TextField(fields={'keyword': {'type': 'keyword'}})
|
||
data = fields.TextField(
|
||
analyzer='ik_max_word',
|
||
search_analyzer='ik_smart',
|
||
fields={'keyword': {'type': 'keyword'}}
|
||
)
|
||
image = fields.KeywordField()
|
||
|
||
class Django:
|
||
model = AchievementData
|
||
# fields列表应该只包含需要特殊处理的字段,或者可以完全省略
|
||
# 因为我们已经显式定义了所有字段
|
||
|
||
@USER_INDEX.doc_type
|
||
class UserDocument(Document):
|
||
"""用户数据文档映射"""
|
||
user_id = fields.LongField()
|
||
username = fields.KeywordField()
|
||
password = fields.KeywordField()
|
||
permission = fields.IntegerField()
|
||
|
||
class Django:
|
||
model = User
|
||
# fields列表应该只包含需要特殊处理的字段,或者可以完全省略
|
||
# 因为我们已经显式定义了所有字段
|