2017-11-11 9 views
1

このソリューションを探していますが、何も見つかりませんでした。私はHaystack == 2.6.1を使い始めたばかりで、Elasticsearch == 2.4.1とElasticsearchサーバー2.4.6を使っています。 haystackのgetting startedの後に検索を実行し結果を得ることができました。実行した後Rebuild_indexは新しいアイテムを更新しませんHaystack Elasticsearch Django

python manage.py rebuild_index 

私は検索を実行することができたと言いました。しかし、私は3つのエントリをデータベースに追加し、インデックスの再構築や更新を試みました。しかし、今私はこれを参照してください:

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個のみを指しています)、GET/haystack/_mappingの404応答が表示されています。 申し訳ありませんが、私はそうな質問のいくつかは、愚かな新見えるかもしれませんしています:

  1. は何干し草をGETするために期待しています。私はelasticsearchのために走っているローカルサーバーを持っていますが、ヘイスタックサーバーでもあるはずですか?
  2. haystackは、素朴な日時のために新しい項目のインデックスを作成できません。
  3. また、新しいアイテムをデータベースに追加するたびにelasticsearchサーバーを再起動する必要がありますか?

更新日:午前、私はelasticsearchサーバーを再起動し、python manage.py rebuild_indexを再送信して、インデックス作成プロセスで35個をすべて取得しました。エントリをもう一度追加して再実行しようとしましたが、それでも35個のアイテムしか索引付けしていません - 今は36個です。に36個のアイテムをインデックスする必要があります。

答えて

1

それはことが判明:

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機能に基づいて更新されます。 PUB_DATEは、右のタイムゾーンのいずれかではなかったか、それはナイーブ形式だったのでrebuild_indexは、最新のアイテムを引っ張っていなかったので、

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()) 

しかし:「はじめに」のドキュメントindex_querysetから、次のようになります。だから、私はdjango.utilsのタイムゾーンの日付を使用しました:

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()) 
関連する問題