elasticsearch安装部署和期间遇到的问题和解决

因为工作需要用到elasticsearch,最近在测试环境部署单机版的elasticsearch服务,可以说是相当的波折,一个问题解决一个问题又来,都要吐血了已经,还好最终都得以解决,解决后那一刻真尼玛的爽啊啊啊。。。

问题列表:

  1. elasticsearch版本的选择,官网那么多版本该怎么选,选的版本能否顺利集成到现有项目中
  2. 部署的elasticsearch服务是否需要启用xpack.security验证(需要用户名密码)
  3. elasticsearch x-pack插件铂金版破解问题
  4. 安装插件elasticsearch-head遇到的版本安装问题
  5. sql插件elasticsearch-sql执行SQL遇到的Authorization问题
  6. kibana的安装使用

问题1:
因为我们项目部署在阿里云服务器,将来使用的elasticsearch不出意外应该就是阿里云的es,那么部署就必须按阿里云es的规范来,阿里云现有好几个版本可以选择,最终选择了6.7.0版本。

问题2:
因为项目使用的springboot版本问题,不能使用spring-boot的starter方式集成elasticsearch,只能通过client的方式操作es,阿里云也有相应的api文档(High Level REST Client(6.7.x))。这个是要支持用户名验证码的,所以部署时要开启xpack.security验证。

问题3:
这个比较麻烦,涉及到替换x-pack-core模块的两个类文件,这个晚点再补充。

问题4:
插件elasticsearch-head版本安装因elasticsearch选的是6.7.0,所以也只能安装Cerebro v0.8.3,它的界面是这样的:
在这里插入图片描述

问题5:
解决elasticsearch-sql插件执行SQL需要Authorization问题
插件elasticsearch-sql安装过程也比较顺利,参考github完成安装
在这里插入图片描述
但是如果elasticsearch开启了权限验证,就会报如下错误:
在这里插入图片描述

 Error:{"error":{"root_cause":[{"type":"security_exception","reason":"missing authentication token for REST request [/_sql]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}}],"type":"security_exception","reason":"missing authentication token for REST request [/_sql]","header":{"WWW-Authenticate":"Basic realm=\"security\" charset=\"UTF-8\""}},"status":401}

需要输入elasticsearch服务用户名密码来验证才能执行SQL查询,但是github上面并没有说明这部分。怎么办呢? 只能去issues栏里面去找看看有没有人遇到一样的问题,还真的有。
Getting 401 error if authentication is enabled Elasticsearch

但是很无奈,我看完后还是没办法解决问题。。。烦,更让我郁闷的是这个问题关闭了,也就是帮助提问者解决了。。反正我看不懂,可能自己的问题,呵呵。

在网上继续查找答案,但是遇到这个问题的几乎没有,看来只有硬头皮从源码入手碰碰运气了,因为是nodejs写的,自己不熟悉,只能试试了。
解压es-sql-site-standalone.zip后得到site-server和_site目录,进入其中的_site目录,打开controllers.js
这里只列出主要的部分:

// settings
var settings = location.search.substring(1).split("&").reduce(function (r, p) {
    r[decodeURIComponent(p.split("=")[0])] = decodeURIComponent(p.split("=")[1]);
    return r;
}, {});

var elasticsearchSqlApp = angular.module('elasticsearchSqlApp', ["ngAnimate", "ngSanitize"]);

// auth
if (settings['username']) localStorage.setItem("auth", "Basic " + window.btoa(settings['username'] + ":" + settings['password']));
if (localStorage.getItem("auth")) {
    elasticsearchSqlApp.config(function ($httpProvider) {
        $httpProvider.interceptors.push(function () {
            return {
                request: function (config) {
                    config.headers['Authorization'] = localStorage.getItem("auth");
                    return config;
                }
            };
        });
    });
}

看到这里应该知道,作者留有验证Authorization这部分逻辑,是从url地址中读取用户名username和密码password的
在这里插入图片描述
再次执行Search就可以了。
在这里插入图片描述

后续继续补充安装过程。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值