django使用Docker和Elasticsearch搭建分布式全文本搜索引擎

本文介绍了如何使用Docker部署Elasticsearch,并在Django项目中配置Haystack进行全文搜索。首先从网络拉取Elasticsearch和elasticsearch-head镜像,然后修改Elasticsearch配置文件以允许跨域访问并开启Linux路由转发。接着启动容器,并在Django配置文件中设置Haystack连接Elasticsearch。最后,根据需求完成索引、序列化和视图的定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.获取镜像,可以通过网络pull
docker image pull delron/elasticsearch-ik:2.4.6-1.0
docker pull mobz/elasticsearch-head:5

2.修改elasticsearch的配置文件 elasticsearc-2.4.6/config/elasticsearch.yml第54行,更改ip地址为本机ip地址
network.host: 192.168.4.6
http.cors.enabled: true
http.cors.allow-origin: "*"

注意:要开启linux路由转发功能

# vi /etc/sysctl.conf
或者
# vi /usr/lib/sysctl.d/00-system.conf
添加如下代码:
    net.ipv4.ip_forward=1

重启network服务
# systemctl restart network

查看是否修改成功
# sysctl net.ipv4.ip_forward
 

3.启动
docker run -d -p 9100:9100 docker.io/mobz/elasticsearch-head:5
将/opt/elasticsearch-2.4.6/config映射成容器里/usr/share/elasticsearch/config
docker run -dti --network=host --name=elasticsearch -v /opt/elasticsearch-2.4.6/config:/usr/share/elasticsearch/config delron/elasticsearch-ik:2.4.6-1.0

4.查看

 

5.在django配置文件中添加

pip install drf-haystack
pip install elasticsearch==2.4.1
INSTALLED_APPS = [
    ...
    'haystack',
    ...
]

 

# Haystack
HAYSTACK_CONNECTIONS = {
    'default': {
        'ENGINE': 'haystack.backends.elasticsearch_backend.ElasticsearchSearchEngine',
        'URL': 'http://192.168.4.6:9200/',  # 此处为elasticsearch运行的服务器ip地址,端口号固定为9200
        'INDEX_NAME': 'meiduo',  # 指定elasticsearch建立的索引库的名称
    },
}

# 当添加、修改、删除数据时,自动生成索引
HAYSTACK_SIGNAL_PROCESSOR = 'haystack.signals.RealtimeSignalProcessor'

6.固定格式配置

 

7、再根据个人需求去做索引结果数据序列化器(继承HaystackSerializer),视图(继承HaystackViewSet)和单独的索引数据模型类(导入from haystack import indexes ,继承indexes.SearchIndex, indexes.Indexable)

8.看效果

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值