使用docker安装elasticsearch搜索引擎

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

 

posted @ 2020-04-27 14:18  不会飞的鲨鱼  阅读(1052)  评论(1编辑  收藏  举报