首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rebuild_index不更新新条目

Rebuild_index不更新新条目
EN

Stack Overflow用户
提问于 2017-11-11 22:23:37
回答 1查看 706关注 0票数 1

一直在寻找这个解决方案,但什么也找不到。我刚刚开始使用== 2.6.1,现在正在使用Elasticsearch==2.4.1和Elasticsearch 2.4.6。我能够执行搜索,并获得结果后,遵循干草的开始。在我跑完之后

代码语言:javascript
复制
python manage.py rebuild_index

它第一次起作用了,因为就像我说的那样,我能够执行搜索。但是,我在db中添加了3个条目,并尝试重新构建和/或更新索引。但现在我看到了:

代码语言:javascript
复制
RuntimeWarning: DateTimeField Order.dateEntered received a naive datetime (2017-11-11 16:07:54.324473) while time zone support is active.
  RuntimeWarning)
Indexing 32 orders
GET /haystack/_mapping [status:404 request:0.004s]

所以当我搜索时,我仍然没有看到我的新条目。现在我有35条订单(它只索引了32条),我看到了这个404响应,用于GET /haystack/_404。对不起,我是新来的,所以有些问题看起来很傻:

  1. 什么是海草期待得到;我有一个本地服务器运行的elasticsearch,但是否应该有一个干草堆服务器以及?
  2. 由于天真的日期时间警告,草堆无法索引新项吗?
  3. 每次向数据库添加新项时,是否必须重新启动elasticsearch服务器?

更新:早上,我重新启动了elasticsearch服务器并重新运行了python manage.py rebuild_index,然后它捕获了索引过程中的所有35个!但是我尝试再次添加一个条目并重新运行它,它仍然只索引了35项--现在我有了36项,所以它应该是索引36项。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-12 18:29:25

事实证明:

代码语言:javascript
复制
RuntimeWarning: DateTimeField Order.dateEntered received a naive datetime (2017-11-11 16:07:54.324473) while time zone support is active.
  RuntimeWarning)

是问题所在。在search_index.py中,它基于index_queryset函数进行更新。从“入门”文档来看,index_queryset应该如下所示:

代码语言:javascript
复制
def index_queryset(self, using=None):
    """Used when the entire index for model is updated."""
    return self.get_model().objects.filter(pub_date__lte=datetime.datetime.now())

但是,由于pub_date不是一个合适的时区,或者因为它是一种天真的格式,所以rebuild_index没有提取最最新的项目。因此,我使用了django.utils时区日期:

代码语言:javascript
复制
from django.utils import timezone

def index_queryset(self, using=None):
    """Used when the entire index for model is updated."""
    return self.get_model().objects.filter(pub_date__lte=timezone.now())
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47243410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档