1.獲取鏡像
docker image pull delron/elasticsearch-ik:2.4.6-1.0
2.在虛擬機中的elasticsearch/config/elasticsearch.yml第54行,更改ip地址為0.0.0.0,端口改為9200,默認端口為9200
# network.host: 172.18.168.123 network.host: 0.0.0.0 # # Set a custom port for HTTP: # http.port: 9200
3..創建docker容器並運行
docker run -dti --network=host --name=elasticsearch -v /root/zipfiles/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0 # 如果想要容器自動運行,在創建時的命令 docker run -dti --restart unless-stopped --name=elasticsearch -p 9200:9200 delron/elasticsearch-ik:2.4.6-1.0 # 如果容器不穩定切換這條命令創建容器 docker run -dti --name=elasticsearch -p 9200:9200 delron/elasticsearch-ik:2.4.6-1.0
4..進入項目虛擬環境中,安裝相關包
# 進入項目虛擬環境 workon django # 如果安裝報錯,先初始化 pip3 install setuptools_scm pip3 install django-haystack pip3 install elasticsearch==2.4.1
5.在settings.py文件中加入如下配置:
INSTALLED_APPS = [ 'haystack', ] # Haystack HAYSTACK_CONNECTIONS = { 'default': { 'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine', 'URL': 'http://0.0.0.0:9200/', # 此處為elasticsearch運行的服務器ip地址,端口號默認為9200 'INDEX_NAME': 'site', # 指定elasticsearch建立的索引庫的名稱 }, } # 設置每頁顯示的數據量 HAYSTACK_SEARCH_RESULTS_PER_PAGE = 5 # 當數據庫改變時,會自動更新索引 HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
6.后端view
# 在apps/news/search_indexes.py中創建如下類:(名稱固定為search_indexes.py) from haystack import indexes # from haystack import site from .models import News class NewsIndex(indexes.SearchIndex, indexes.Indexable): """ News索引數據模型類 可以借用 hay_stack 借助 ES 來查詢 """ # 主要進行關鍵字查詢 text = indexes.CharField(document=True, use_template=True) id = indexes.IntegerField(model_attr='id') title = indexes.CharField(model_attr='title') digest = indexes.CharField(model_attr='digest') content = indexes.CharField(model_attr='content') image_url = indexes.CharField(model_attr='image_url') def get_model(self): """返回建立索引的模型類 """ return News def index_queryset(self, using=None): """返回要建立索引的數據查詢集 """ return self.get_model().objects.filter(is_delete=False)
7.創建索引模板
# 創建templates/search/indexes/news/news_text.txt文件(文件名為:模型_text.txt) # 此模板指明當將關鍵詞通過text參數名傳遞時,可以通過news 的title、digest、content 來進行關鍵字索引查詢 {{ object.title }} {{ object.digest }} {{ object.content }}
8.創建索引
# 進入項目所在目錄 在虛擬機中執行如下命令,生成索引 python manage.py rebuild_index