本项目采用的django的drf框架
因项目本身需求,现打算将News,消息等东西存入es里,采用es,mysql混用的模式
es方便的json格式吸引了我,故打算将之前的数据库模型
./models.py
classNews(models.Model):
"""
新闻类
"""
title=models.CharField(max_length=256,verbose_name="标题")
level=models.ForeignKey(Level,verbose_name="所属分级",on_delete=models.SET_NULL,null=True,blank=True)
content=models.TextField(verbose_name="内容")
author=models.ForeignKey(User,verbose_name="作者",on_delete=models.SET_NULL,null=True,blank=True)
cancomment=models.IntegerField(verbose_name="是否能被评论",choices=CAN_CHOICES,default=1)
create_date=models.DateTimeField(verbose_name="创建时间",auto_now_add=True)
watch_count=models.IntegerField(verbose_name="浏览量",default=0)
pass
classNewsPicsUri(models.Model):
"""
新闻图片附件地址类
"""
path=models.CharField(verbose_name="新闻图片路径",max_length=255)
parent=models.ForeignKey(News,verbose_name="所属新闻",on_delete=models.CASCADE)
pass
在es里存成类似以下结构
{
"title":"xxx",
"content":"xxxx",
.......
"pics":[
{"path":"xxxx"},
{"path":"xxxx"},
],
.......
}
除了要为News模型创建索引之外还要怎么做呢?把NewsPicsUri也创建索引吗?
./news_index.py
classNewsIndex(indexes.SearchIndex,indexes.Indexable):
#必须的字段
text=indexes.CharField(document=True,use_template=True)
#必须重载的返回的模型
defget_model(self):
returnNews
#必须重载的返回的查询集
defindex_queryset(self,using=None):
returnself.get_model().objects.all()
pass
分 -->
|