Python配置elasticsearch
安装es
- 使用docker安装
- 从仓库中拉取镜像
docker image pull delron/elasticsearch-ik:2.4.6-1.0 - 解压本地镜像
如:docker load -i elasticsearch-ik-2.4.6_docker.tar - 配置Elasticsearch-ik
- 将准备好的文件夹拷贝到/home/python下
- 修改elasticsearch/cofig/elasticsearch.yml中的network.host属性为本机ip,内网ip为192.168.x.x,外网ip本机为0.0.0.0
- 使用docker运行elasticsearch-ik
sudo docker run -dti --name=elasticsearch --network=host -v /home/python/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0
Python配置
- 安装Haystack
- pip install django-haystack
- pip install elasticsearch==2.4.1
- 注册应用和路由
INSTALLED_APPS = [ 'haystack' ]
url(r'^search/',include('haystack.urls'))
- 配置Haystack
# Haystack
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
'URL': 'http://62.234.142.229:9200/', # Elasticsearch服务器ip地址,端口号固定为9200
'INDEX_NAME': 'meiduo_yzl', # Elasticsearch建立的索引库的名称
},
}
# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'
from haystack import indexes
from .models import SKU
class SKUIndex(indexes.SearchIndex, indexes.Indexable):
"""属性text不可修改"""
text = indexes.CharField(document=True, use_template=True)
def get_model(self):
"""用于搜索的表"""
return SKU
def index_queryset(self, using=None):
"""指定哪些行的数据在搜索范围内"""
return self.get_model().objects.filter(is_launched=True)
- 创建templates/search/indexes/goods/sku_text.txt
- 指明要创建的索引字段
{{ object.id }}
{{ object.name }}
{{ object.caption }}
python manage.py rebuild_index