广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Elasticsearch集群搭建及Py
  • 695
分享到

Elasticsearch集群搭建及Py

集群ElasticsearchPy 2023-01-31 03:01:22 695人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

本文记录elasticsearch物理集群的安装步骤,在3台机器上部署一个集群。行文顺序为整个安装过程从头到尾,期间发现不少问题。因此,本文不适合一步步跟着做,建议您看完整篇文章,然后再开始搭建集群。 1 . 环境 机器: 3台

本文记录elasticsearch物理集群的安装步骤,在3台机器上部署一个集群。行文顺序为整个安装过程从头到尾,期间发现不少问题。因此,本文不适合一步步跟着做,建议您看完整篇文章,然后再开始搭建集群。

1 . 环境

  • 机器: 3台物理机器,分别为130,132,134
  • 操作系统Centos 6.6
  • Elasticsearch: 2.3.3 版本

确保安装相应版本jdk,使用java -version确认安装。

2. 下载安装

从官网下载稳定版本:

wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/tar/elasticsearch/2.3.3/elasticsearch-2.3.3.tar.gz

拷贝到待安装的目录:

 cp /home/soft/es/elasticsearch-2.3.3.tar.gz /opt/es

解压:

cd /opt/es
tar -zxvf elasticsearch-2.3.3.tar.gz

3.配置集群

elasticsearch的配置文件采用YAML标记语言,在config目录下:

vim elasticsearch-2.3.3/config/elasticsearch.yml

需要的基本配置主要包括:

  • cluster.name: 集群名称,集群名称用于跟其他相同名字的节点构成整个集群.
  • node.name: 节点名称, 是该elasticsearch实例的唯一标识
  • path.data: 数据路径,指定文档,索引存放的位置。
  • path.logs:日志路径,指定运行日志的存放目录
  • network.host: 主机名称

一个示例配置如下:

cluster.name: brandon-elasticsearch
#
# ------------------------------------ node ------------------------------------
#
# Use a descriptive name for the node:
#
node.name: node-130
#
# Add custom attributes to the node:
#
# node.rack: r1
#
# ----------------------------------- Paths ------------------------------------
#
# Path to directory where to store the data (separate multiple locations by comma):
#
path.data: /home/data/es
#
# Path to log files:
#
path.logs: /var/log/es

network.host: 192.168.1.132

配置完成后,将整个文件copy到132和134.

scp -r elasticsearch-2.3.3 root@192.168.1.132:/opt/es
scp -r elasticsearch-2.3.3 root@192.168.1.134:/opt/es

4. 启动及问题解决

完成集群配置之后,启动:

./elasticsearch-2.3.3/bin/elasticsearch

出现如下异常:

java.lang.RuntimeException: don't run elasticsearch as root.
        at org.elasticsearch.bootstrap.Bootstrap.initializeNatives(Bootstrap.java:93)
        at org.elasticsearch.bootstrap.Bootstrap.setup(Bootstrap.java:144)
        at org.elasticsearch.bootstrap.Bootstrap.init(Bootstrap.java:270)
        at org.elasticsearch.bootstrap.Elasticsearch.main(Elasticsearch.java:35)

Elasticsearch不允许使用root账号启动,因此需要建一个专用的账号。

adduser es
passwd es
chown -R es ./elasticsearch-2.3.3

再次启动,还是异常:

这里写图片描述

从日志可以看出是数据路径和日志路径的权限问题,修改对应文件的权限:

chown -R es /home/data/es/
chown -R es /var/log/es/

其他2台机器也要一样的操作,很麻烦,尤其是在多台机器的时候,因此建议一开始就先创建账号,再安装ElasticSearch。

再启动,成功:

这里写图片描述

其他机器使用一样的方式启动。

查看集群信息,启动浏览器访问如下页面:Http://192.168.1.132:9200/。发现集群只有一个节点,说明3台机器并没有构成一个集群,查找文档发现需要配置其他机器的ip,如下:

discovery.zen.ping.unicast.hosts: ["192.168.1.130", "192.168.1.134"] 

其他节点配置类似。重新启动,从日志中可以看出32这个节点作为salve加入到master中:

这里写图片描述

这里写图片描述

如果此时停掉master,elasticsearch将重新选举出新的master,日志可以证明这一点:

这里写图片描述

OK,现在3个节点构成集群了,查看api可以看到这一点:
http://192.168.1.132:9200/_cluster/stats?pretty

这里写图片描述

大功告成。但是用这种方式启动,一旦退出命令行,elasticsearch就会停止,有以下2中解决方案;
此时如果退出控制台,es会被关掉,解决方式:
1) 使用rpm安装,然后service elasticsearch start
2) nohup后台运行

5. 使用Python与Elasticsearch交互

Elasticsearch对外提供REST API,同时也可以使用二进制协议与其交互。各种语言的客户端都提供了相应的封装,这里以python为例说明。

我们使用elasticsearch-py,可以在这里查到相关信息。

使用pip安装:

pip install elasticsearch

简单的搜索例子:

from elasticsearch import Elasticsearch
from elasticsearch import helpers

es = Elasticsearch()

res = es.get(index="megacorp", doc_type="employee", id=1)

print res

下面这个例子使用批量api,批量导入网上抓取的微博数据:

from elasticsearch import Elasticsearch
from elasticsearch import helpers
import sys

# 设置编码,避免中文乱码
reload(sys)
sys.setdefaultencoding('utf8')

# 连接到集群,提供节点,不一定要全部节点
es = Elasticsearch(["192.168.1.130", "192.168.1.132","192.168.1.134"])

# 打开文件准备读取数据
file_name = 'E:\weibo_freshdata.2016-05-31'
wbfile = open(file_name, 'r')
actions = []
# 循环每一行
for line in wbfile:
    fields = line.split('\t')
    action = {
        "_index": "wb",
        "_type": "may",
        "_id": fields[0],
        "_source": {"id": fields[0], 'crawler_time': fields[1], 'crawler_time_stamp': fields[2],
                    'is_retweet': fields[3],
                    'user_id': fields[4],
                    'nick_name': fields[5], 'touxiang': fields[6], 'user_type': fields[7], 'weibo_id': fields[8],
                    'weibo_content': fields[9],
                    'zhuan': fields[10], 'ping': fields[11], 'zhan': fields[12], 'url': fields[13],
                    'device': fields[14],
                    'locate': fields[15],
                    'time': fields[16],
                    'time_stamp': fields[17],
                    'r_user_id': fields[18],
                    'r_nick_name': fields[19],
                    'r_user_type': fields[20],
                    'r_weibo_id': fields[21],
                    'r_weibo_content': fields[22],
                    'r_zhuan': fields[23],
                    'r_ping': fields[24],
                    'r_zhan': fields[25],
                    'r_url': fields[26],
                    'r_device': fields[27],
                    'r_location': fields[28],
                    'r_time': fields[29],
                    'r_time_stamp': fields[30],
                    'pic_content': 'http://ww3.sinaimg.cn/large/' + fields[31] + '.jpg'}
    }
    actions.append(action)
    # 每1完条批量导入一次
    if len(actions) == 10000:
        # helper批量导入
        helpers.bulk(es, actions)
        actions = []
        print "insert 10000"
if len(actions) > 0:
    # 导入最后剩余的数据
    helpers.bulk(es, actions)
print "finish"

(完)

--结束END--

本文标题: Elasticsearch集群搭建及Py

本文链接: https://www.lsjlt.com/news/187455.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Elasticsearch集群搭建及Py
    本文记录Elasticsearch物理集群的安装步骤,在3台机器上部署一个集群。行文顺序为整个安装过程从头到尾,期间发现不少问题。因此,本文不适合一步步跟着做,建议您看完整篇文章,然后再开始搭建集群。 1 . 环境 机器: 3台...
    99+
    2023-01-31
    集群 Elasticsearch Py
  • 怎么用docker搭建elasticsearch集群
    本篇内容主要讲解“怎么用docker搭建elasticsearch集群”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用docker搭建elasticsearch集群”吧!概述用docker进...
    99+
    2023-06-19
  • Elasticsearch集群是怎么搭建的
    Elasticsearch集群是怎么搭建的,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:资源集群: gh-cluster节点1:gh-cluster-node-01 &...
    99+
    2023-06-04
  • Windows10怎么搭建ElasticSearch集群服务
    这篇“Windows10怎么搭建ElasticSearch集群服务”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Window...
    99+
    2023-06-05
  • elasticsearch-2.1.1集群搭建的示例分析
    这篇文章主要为大家展示了“elasticsearch-2.1.1集群搭建的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“elasticsearch-2....
    99+
    2022-10-19
  • Elasticsearch集群搭建与相关知识点整理
    前言:大家好,我是小威,24届毕业生,在一家满意的公司实习。本篇文章参考网上的课程,介绍Elasticsearch集群的搭建,以及Elasticsearch集群相关知识点整理。 如果文章有什么需要改进...
    99+
    2023-09-07
    elasticsearch docker 大数据 搜索引擎 springcloud 原力计划
  • redis 集群搭建以及redisli
    实现3主3从的集群 虚拟机单机ip:192.168.40.128 集群基本搭建 简单下载 通过 wget http://download.redis.io/releases/redis-4.0.10.tar.gz 解压缩 tar z...
    99+
    2023-01-31
    集群 redis redisli
  • Zookeeper集群的搭建及介绍
    本篇内容主要讲解“Zookeeper集群的搭建及介绍”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Zookeeper集群的搭建及介绍”吧!1.搭建怎么搭建单机无安全校验的就不说了,百度一搜一大堆...
    99+
    2023-06-19
  • 集群搭建
      1.  集群搭建之主从复制 MySQL主从复制是一个异步的复制过程,主库发送更新事件到从库,从库读取更新记录,并执行更新记录,使得从库的内容与主库保持一致。 1.1   主服务器的配置 1.1.1   第一步:修改my.con...
    99+
    2017-09-01
    集群搭建
  • ZooKeeper集群操作及集群Master选举搭建启动
    目录ZooKeeper介绍ZooKeeper特征分层命名空间搭建ZK集群启动zk集群zk集群master选举ZooKeeper介绍 ZooKeeper 是一个为 分布式应用 提供的 ...
    99+
    2022-11-13
    ZooKeeper集群操作选举 ZooKeeper集群Master
  • MGR集群搭建及配置过程
      MGR全称MySQL Group Replication(Mysql组复制),是MySQL官方于2016年12月推出的一个全新的高可用与高扩展的解决方案。MGR提供了高可用、高扩...
    99+
    2022-11-13
  • redis集群搭建
    Redis 5.0之后版本的高可用集群搭建 Redis系统介绍: Redis的基础介绍与安装使用步骤:https://www.jianshu.com/p/2a23257af57b Redis的基础数据结构与使用:https...
    99+
    2019-03-23
    redis集群搭建
  • mongodb集群搭建
    mongodb集群搭建 小码农叔叔 2019-06-17 22:51:33 4086 收藏 7 分类专栏: mongodb 版权 集群方式有三种:Replica Set、Sharding、Master-Slaver三种方式 常用的主要是副...
    99+
    2014-09-28
    mongodb集群搭建
  • MHA集群搭建
    开篇 本文主要介绍如何搭建MHA集群,希望给你带来帮助 基本环境介绍 Linux:CentOS 7.4 MySQL:5.7.21+传统复制(开启GTID不搭建binlog server) VIP:192.1...
    99+
    2022-10-18
  • kafka集群搭建
     一个典型的Kafka 集群中包含若干Producer(可以是web 前端产生的Page View,或者是服务器日志,系统 CPU、Memory 等),若干broker(Kafka 支持水平扩展,一般broker 数量越多,集群吞...
    99+
    2023-01-31
    集群 kafka
  • 搭建Nacos集群
    nacos的默认端口是8848,但是他还占用了另外两个接口:9848、9849。因此,在单机配置集群时,不可使用三个连续的端口,否则会导致 gRPC端口冲突。 端口与主端口(8848)偏移量作用98481000客户端gRPC请求服务端口,用...
    99+
    2023-08-18
    java mysql 开发语言 nacos
  • nacos集群搭建
    在官方文档上面就有结束搭建nacos是介绍 官方文档提供了一个Nacos集群的架构图,当我们访问Nacos时,首先会经过SLB,也就是负载均衡,通常是一个nginx,通过nginx来进行分发到具体的Nacos服务器上面。我们需要给不同的服...
    99+
    2023-08-19
    centos linux 服务器
  • 搭建Domino群集
    搭建Domino群集浙江省电力办公自动化系统(以下简称:OA系统)是全省推广,统一软件、统一平台、统一规划与实施的一套大型应用系统。它的硬件平台采用IBM的小型机AS/400,软件采用Lotus Domino/Notes,并实施了在一台小型...
    99+
    2023-06-03
  • Hadoop集群搭建
    文章目录 一、运行环境配置(所有节点)1、基础配置2、配置Host 二、依赖软件安装(101节点)1、安装JDK2、安装Hadoop(root)3、Hadoop目录结构 三、本地运行模式(官方WordCount)1、简介...
    99+
    2023-08-30
    hadoop linux java
  • Zookeeper集群搭建以及python操作zk
    ZooKeeper是一个开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。Zookeeper设计目的最终一致性:client不论连接到那个Server,展示给它的都是同一个...
    99+
    2023-01-31
    集群 操作 Zookeeper
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作