Python中elasticsearch开源搜索引擎的安装和基本使用

一、elasticsearch的介绍及功能

elasticsearch是一个由java编写一个分部式搜索引擎,使用elasticsearch可以实现以下 功能。

  • 快速的全文检索,100万数据检索不到1秒
  • 提供分布式和集群
  • 本身提供完善的restful接口

python应用:

  • 在django或者flask使用当中,用elasticsearch代替数据库存储一部分内容。
  • 在爬虫当中,使用elasticsearch进行大数据的存储。

二、elasticsearch服务器的安装搭建(Centos)

1、安装java最新的jdk(1.8版本以上)

Centos系统自带java版本为1.8.0
在这里插入图片描述

2、下载elasticsearch并移动至home目录下解压

 wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.3.1.tar.gz

移动到home目录下进行解压
在这里插入图片描述

3、创建启动elasticsearch专用的用户(es默认不允许以root身份启动)
在这里插入图片描述

4、创建存放elasticsearch数据和日志的目录并赋予其所有者为esuser用户
在这里插入图片描述

5、修改节点配置
cd到elasticsearch目录下的config目录下,找到elasticsearch.yml节点配置文件。
进行备份,然后开始配置

cd elasticsearch-6.3.1/config/
cp elasticsearch.yml elasticsearch.yml.bak
vim elasticsearch.yml

在这里插入图片描述
①打开注释,配置集群名称

cluster.name: my-application

在这里插入图片描述
②打开注释,配置节点属性

node.attr.rack: r1

在这里插入图片描述
③打开注释,配置数据及日志存储路径

path.data: /home/esdata/data
path.logs: /home/esdata/log

在这里插入图片描述

④打开注释,配置内存

bootstrap.memory_lock: true

在这里插入图片描述

⑤打开注释,配置网络参数

network.host: 10.10.21.130
http.port: 9200

在这里插入图片描述
⑥打开注释,配置静态主机列表

discovery.zen.ping.unicast.hosts: ["host1", "host2"]

在这里插入图片描述
⑦打开注释,配置索引分片节点

gateway.recover_after_nodes: 3

在这里插入图片描述
⑧打开注释,配置是否可以通过正则或者_all删除或者关闭索引

action.destructive_requires_name: true

在这里插入图片描述

7、编辑/etc/security/limits.conf文件,给特定用户设置持续限制
在这里插入图片描述
在文件结尾增加如下配置:

esuser hard nofile 65536
esuser soft nofile 65536
esuser soft memlock unlimited
esuser hard memlock unlimited

在这里插入图片描述

8、编辑/etc/sysctl.conf文件,设置虚拟内存最大映射数量,否则es内存报错
在这里插入图片描述
在文件结尾添加:

vm.max_map_count=266144

max_map_count参数解释:

max_map_count文件包含限制一个进程可以拥有的VMA(虚拟内存区域)的数量。虚拟内存区域是一个连续的虚拟地址空间区域。在进程的生命周期中,每当程序尝试在内存中映射文件,链接到共享内存段,或者分配堆空间的时候,这些区域将被创建。调优这个值将限制进程可拥有VMA的数量。限制一个进程拥有VMA的总数可能导致应用程序出错,因为当进程达到了VMA上线但又只能释放少量的内存给其他的内核进程使用时,操作系统会抛出内存不足的错误。如果你的操作系统在NORMAL区域仅占用少量的内存,那么调低这个值可以帮助释放内存给内核用。
在这里插入图片描述
重新载入配置:

sysctl -p

在这里插入图片描述

8、启动elasticsearch服务器

切换到esuser用户下
在这里插入图片描述
进入到elasticsearch-6.3.1/bin/目录下,启动elasticsearch脚本,启动服务
在这里插入图片描述

./elasticsearch

在这里插入图片描述

在这里插入图片描述

9、访问elasticsearch服务器进行测试效果
在这里插入图片描述

三、python elasticsearch操作

Python 基于es的操作都是接口类型的操作,但是后来es发现Python接口操作总是离不开一段类似于爬虫的代码。Es就进行了Python接口的封装。

es的基本存储单位是索引(index),类似mysql当中的表

1、安装elasticsearch模块

pip install elasticsearch

在这里插入图片描述

2、编写elasticsearch脚本测试

from elasticsearch import Elasticsearch

# 连接es服务器
es = Elasticsearch(["10.10.21.130"],timeout=360)


# 插入索引
data = {
    "mappings":{
        "properties":{
            "title":{
                "type":"text",
                "index":True
            },
            "keywords":{
                "type":"text",
                "index":True
            },
            "link":{
                "type":"string",
                "index":True
            },
            "content":{
                "type":"text",
                "index":True
            },
        }
    }
}

es.indices.create(index="python-index",body=data)

# 查看索引
# es.search()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

孜孜孜孜不倦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值