使用elasticsearch指数(干し草の山を持ちます)

1、ストレージから画像#プル
$ Delronはドッカーイメージ/ elasticsearch-IK sudoを引く:2.4.6-1.0
2、ダウンロードelasticsearc-2.4.6ディレクトリがホームディレクトリにコピーされます。
/home/python/elasticsearc-2.4.6/config/elasticsearch.ymlライン54を変更します。
このマシンのアドレス、IPアドレス、IP本当の変化。
3、ドッキングウィンドウの実行の使用はelasticsearch
はsudoドッキングウィンドウのRUNを-dti --name = elasticsearch --network = -v /home/python/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config Delronホスト/ elasticsearch-IK: 2.4.6-1.0
。4、
$ PIP-Djangoは干し草の山のインストール
== 2.4.1インストール$ PIP elasticsearch

5.Haystack登録およびルーティングアプリケーション(設定プロファイル)
INSTALLED_APPS = [
#テキスト検索
'干し草の山の'
]
ヘイスタックレジスタ#
URLを(R&LT、( 'haystack.urls'を含む'^ /検索'))

。6、干し草は、検索エンジン後方に設定ファイルに配置
#干し草
= {HAYSTACK_CONNECTIONS
'デフォルト':{
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine'、
'URL': 'http://172.16.238.128:9200/'、#のelasticsearchサーバのIPアドレス、ポート番号9200がに固定されています。
「INDEX_NAME」:「meiduo_mall」、設立インデックスライブラリ#のelasticsearchの名前
}
}
#あなたは、追加、変更、削除データ、自動的にインデックスを生成
HAYSTACK_SIGNAL_PROCESSOR =「haystack.signals.RealtimeSignalProcessor

7を、ヘイスタックは、データのインデックスを確立するには、
インデックスを作成する1クラス

フィールド上の検索エンジンのインデックスを示す指標を作成するためのクラスによって、あるは、によるキーワードのデータフィールドを取得することができます。
このプロジェクトのフルテキスト検索のSKU情報は、商品の用途における新しいsearch_indexes.pyファイルので、このクラスは、インデックスを格納するために使用されます。

干し草の山のインポートインデックス

から .models インポートのSKU 

クラスSKUIndex(indexes.SearchIndex、indexes.Indexable):
     「」「SKUのインデックスデータモデルクラス」「」
    テキスト = indexes.CharField(ドキュメント=真、use_template = 真)は

    DEF (自己をget_model ):
         「」「を返すモデルクラスのインデックス」「」
        を返すSKU 

    DEFの index_querysetを(自己、使用して= なし):
         「」「データクエリ設定するためにリターン指数」「」
        リターン self.get_model()objects.filter。 (is_launched =真)


インデックスカテゴリSKUIndex説明は:
SKUIndexが確立分野では、干し草Elasticsearch検索エンジンによって照会することができます。
私たちは、ドキュメント= Trueのように宣言したテキストフィールドは、この分野でのテーブル名は、主にキーワードクエリをフィールドです。
テキストフィールドのインデックス値は、モデルクラスから成るモデルクラスのデータベースフィールド、特に複数のフィールドから成ることができる、我々はuse_template = trueは、指定された後続のテンプレートで表されます。

2.テンプレートファイルのテキストフィールドのインデックス値を作成し
、テンプレートディレクトリに使用するテンプレートファイルのテキストフィールドを作成するために
、具体的テンプレート/検索/インデックス/雑貨/で定義されて sku_text.txt ファイル
{object.id} {}
{} {} object.name
{{object.caption}}
テンプレートファイル説明:キーワードテキストパラメータ名をによって渡される
SKUのテンプレートで指定されたID、名前、フィールドキーワードインデックスクエリにインデックス値としてキャプションテキスト。

8、手動でインデックス生成された
Pythonのmanage.py rebuild_indexを

9、テストインデックスは。
フォームをテストする準備ができています。
リクエストメソッド:GET
リクエスト住所:/検索/
リクエストパラメータ:Qは、
次のコードgoods.views.pyファイルを追加します。

クラスMySearchView(SearchView):
     '' ' 重写SearchView类''' 
    デフcreate_response(自己):
        ページ = self.request.GET.get(' ページ' 获取搜索结果 
        コンテキスト= self.get_context()
        DATA_LIST = [ ]
         のための SKU コンテキスト[ ' ページ' ] .object_list:
            data_list.append({ 
                ' ID ' :sku.object.id、
                 ' 名称' :sku.object.name、
                 '価格' :sku.object.price、
                 ' default_image_url ' :sku.object.default_image_url、
                 ' SEARCHKEY ':context.get(' クエリ' )、
                 ' PAGE_SIZE ':コンテキスト[ ' ページ' ] .paginator.num_pages、
                 ' ":コンテキスト[ ' ページ' ] .paginator.count 
            }) 
        拼接参数、返回
        リターン http.JsonResponse(DATA_LIST、安全=偽)


コンフィギュレーション、無as_view()ルーティング
URL、(R&LTを() '^検索/ $'、views.MySearchView)

#1 dev.pyは、次のコード、ページあたりのピースの数を決定するためのデータを追加することができます
。HAYSTACK_SEARCH_RESULTS_PER_PAGEを5 =

おすすめ

転載: www.cnblogs.com/wjun0/p/11817194.html