利用Docker搭建Elasticsearch和Kibana版本7.4.2(Mac)

最近公司技术部门发福利,给技术部小伙伴买了一些技术教程视频和书籍,考虑到App使用全文搜索功能,购买了Elasticsearch入门视频。

这篇文章记录一下使用Docker搭建本机测试用elasticsearch和网页图形工具kibana

当前elasticsearch和kibana的最新版本是7.4.2,使用命令拉取最新两个镜像:

docker pull elasticsearch:7.4.2
docker pull kibana:7.4.2

花费半小时拉取完毕之后(网速看脸,有时候快有时候慢),两个官方镜像就已经准备好了。

首先创建一下elasticsearch和kibana专用的docker网络:

docker network create --subnet=172.20.0.0/16 es

创建elasticsearch运行容器:

docker run -d --name elasticsearch -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" -v /Users/charles/docker/elasticsearch/data:/usr/share/elasticsearch/data --network es --ip 172.20.0.2 elasticsearch:7.4.2

上述命令中 /Users/charles/docker/elasticsearch/data 是elasticsearch存放索引数据的文件夹,换成你觉得方便的地方。设置固定ip方便设置kibana

防止遇到一些未知的错误,我建议你把上述命令中的-d参数去掉,不使用daemon方式运行,直接以前台运行,看到下图则表明elasticsearch运行正常,再加上-d作为后台服务运行

打开http://127.0.0.1:9200/测试一下是否运行正常

看到类似上图一样的JSON串说明elasticsearch运行正常。上图使用了Chrome的格式化JSON串插件,科学上网后点击此链接安装

接下来安装kibana客户端工具,使用命令获取elasticserach容器的虚拟内网ip地址

docker inspect elasticsearch | grep IPAddress
配图仅供参考

我的docker上显示的是 172.20.0.2,根据此IP地址启动kibana容器

docker run --network es --name kibana -e ELASTICSEARCH_URL=http://172.20.0.2:9200 -p 5601:5601 -d kibana:7.4.2

执行好此命令后,可以在浏览器打开http://127.0.0.1:5601

如果页面提示:Kibana server is not ready yet,稍等片刻再重试

见到上图,则说明kibana已经正常运行了。

可以使用命令,让elasticsearch、kibana在docker运行时自动启动,参考链接

docker update --restart=always elasticsearch
docker update --restart=always kibana

尽情享用elasticsearch吧

记laravel5转thinkphp5的备忘

  • 在数据库的ActiveRecord对应的model中,TP5里面的关联(relation)一定不能定义成下划线的名字,view层使用的时候无法找到这个变量。

错误示例:{$model.abc_relation.name},正确示例:{$model.abcRelation.name}

 

JavaScript 判断是否移动端浏览器

 var browser={
        versions:function(){
            var u = navigator.userAgent;
            var app = navigator.appVersion;
            return {//移动终端浏览器版本信息
                trident: u.indexOf('Trident') > -1, //IE内核
                presto: u.indexOf('Presto') > -1, //opera内核
                webKit: u.indexOf('AppleWebKit') > -1, //苹果、谷歌内核
                gecko: u.indexOf('Gecko') > -1 && u.indexOf('KHTML') == -1, //火狐内核
                mobile: !!u.match(/AppleWebKit.*Mobile.*/), //是否为移动终端
                ios: !!u.match(/\(i[^;]+;( U;)? CPU.+Mac OS X/), //ios终端
                android: u.indexOf('Android') > -1 || u.indexOf('Linux') > -1, //android终端或者uc浏览器
                iPhone: u.indexOf('iPhone') > -1 , //是否为iPhone或者QQHD浏览器
                iPad: u.indexOf('iPad') > -1, //是否iPad
                webApp: u.indexOf('Safari') == -1 //是否web应该程序,没有头部与底部
            };
        }(),
        language:(navigator.browserLanguage || navigator.language).toLowerCase()
    }

	var language = navigator.browserLanguage ? navigator.browserLanguage:navigator.language; 
	
    if(browser.versions.mobile || browser.versions.ios || browser.versions.android || browser.versions.iPhone || browser.versions.iPad){
		if (language.indexOf('zh') > -1) {
			window.location = "/home/index";
		} else {
			window.location = "/homeen/index";
		}
    } else {
        window.location = "/index.html";
    }