首先说明下我安装时的环境是windows10。
安装node.js,下载与自己系统符合的版本进行安装:
安装完成后可在命令行中输入:node -v查看版本

下载Elasticsearch-Head
下载解压后的目录:

cmd命令行进入此目录,执行npm install,成功后执行npm run start:

服务开启成功后,在浏览器访问localhost:9100,一开始集群健康值可能会显示:未连接

如果显示未连接,则找到Elasticsearch安装目录(注意,不是Elasticsearch-head安装目录),打开config/elasticsearch.yml,在最下方增加以下代码:
http.cors.enabled: true http.cors.allow-origin: "*" http.cors.allow-methods: OPTIONS, HEAD, GET, POST, PUT, DELETE http.cors.allow-headers: "X-Requested-With, Content-Type, Content-Length, X-User"
保存后重启Elasticsearch和Elasticsearch-head。

end
首先说明下我安装时的环境是windows10。
下载Elasticsearch-analysis-ik前提:
重要提醒:Elasticsearch-analysis-ik的版本必须与Elasticsearch版本一致!!!
官方下载地址:
https://github.com/medcl/elasticsearch-analysis-ik/releases/


下载完成后在Elasticsearch安装目录的plugins文件夹下新建ik文件夹,并将下载的文件解压到此文件夹:
然后重启Elasticsearch,可以使用Elasticsearch-Head中的复合查询测试下效果。
end
记录一下在windows10下安装java的过程:
1、首先访问官网下载java8,此版本兼容较好且稳定,下载时注意与自己的系统匹配(安装时可能需要注册登录):
https://www.oracle.com/java/technologies/javase/javase-jdk8-downloads.html
2、安装界面,点击下一步

3、选择安装路径,点击下一步



4、安装好的根目录

5、配置环境变量,打开配置文件,此电脑-右键-属性-高级系统设置-环境变量



6、新建用户环境变量,变量名为JAVA_HOME,变量值为javaJDK的安装目录


7、找到用户变量中的path,双击编辑,点击编辑文本,在后面加上:
;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin


8、点击系统变量中的新建,新增变量名为CLASSPATH的变量,值为:
.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

9、然后点击确定关闭即可。
10、windows+R,输入cmd,回车,输入java -version查看是否安装成功。

11、end
/**
* 车牌号验证
* @param $license
* @return bool
*/
function iscarid($license)
{
if (empty($license)) {
return false;
}
//匹配民用车牌和使馆车牌
// 判断标准
// 1,第一位为汉字省份缩写
// 2,第二位为大写字母城市编码
// 3,后面是5位仅含字母和数字的组合
$regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新使]{1}[A-Z]{1}[0-9a-zA-Z]{5}$/u";
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
//匹配特种车牌(挂,警,学,领,港,澳)
//参考 https://wenku.baidu.com/view/4573909a964bcf84b9d57bc5.html
$regular = '/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{4}[挂警学领港澳]{1}$/u';
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
//匹配武警车牌
//参考 https://wenku.baidu.com/view/7fe0b333aaea998fcc220e48.html
$regular = '/^WJ[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]?[0-9a-zA-Z]{5}$/ui';
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
//匹配军牌
//参考 http://auto.sina.com.cn/service/2013-05-03/18111149551.shtml
$regular = "/[A-Z]{2}[0-9]{5}$/";
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
//匹配新能源车辆6位车牌
//参考 https://baike.baidu.com/item/%E6%96%B0%E8%83%BD%E6%BA%90%E6%B1%BD%E8%BD%A6%E4%B8%93%E7%94%A8%E5%8F%B7%E7%89%8C
//小型新能源车
$regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[DF]{1}[0-9a-zA-Z]{5}$/u";
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
//大型新能源车
$regular = "/[京津冀晋蒙辽吉黑沪苏浙皖闽赣鲁豫鄂湘粤桂琼川贵云渝藏陕甘青宁新]{1}[A-Z]{1}[0-9a-zA-Z]{5}[DF]{1}$/u";
preg_match($regular, $license, $match);
if (isset($match[0])) {
return true;
}
return false;
} /**
* 两个时间戳之间的间隔天数,按照日期算
* @param $time1
* @param $time2
* @return mixed
*/
function interval_days($time1,$time2)
{
$cha = date_diff(date_create(date('Ymd', $time1)), date_create(date('Ymd', $time2)));
return $cha->days;
} /**
* PHP计算两个时间段交集时间
* @param int $beginTime1 开始时间1
* @param int $endTime1 结束时间1
* @param int $beginTime2 开始时间2
* @param int $endTime2 结束时间2
* @return int
*/
function is_time_cross($beginTime1 = 0, $endTime1 = 0, $beginTime2 = 0, $endTime2 = 0)
{
//////////剔除没有交集的情况,在一段时间的两侧情况
if (($beginTime1 < $beginTime2 && $endTime1 = $endTime2 && $endTime1 > $endTime2)) {
return 0;
}
/////////假设一段时间在另一段时间之内的情况
//当time2完全在time1的范围内时
if ($beginTime2 >= $beginTime1 && $endTime2 = $beginTime2 && $endTime1 <= $endTime2) {
return $endTime1 - $beginTime1;
}
/////////假设一段时间在另一段时间开始或结尾处
//当time1范围在$beginTime2范围左右时
if ($beginTime1 < $beginTime2 && $endTime1 > $beginTime2) {
return $endTime1 - $beginTime2;
}
//当time1范围在$endTime2范围左右时
if ($beginTime1 < $endTime2 && $endTime2 < $endTime1) {
return $endTime2 - $beginTime1;
}
//当time2范围在$beginTime1范围左右时
if ($beginTime2 < $beginTime1 && $endTime2 > $beginTime1) {
return $endTime2 - $beginTime1;
}
//当time2范围在$endTime1范围左右时
if ($beginTime2 < $endTime1 && $endTime1 < $endTime2) {
return $endTime1 - $beginTime2;
}
} /**
* 通过IP获取地址
* @param string $ip
* @return string
*/
function get_address($ip = '')
{
$ipadd = get_url("https://api.map.baidu.com/location/ip?ak=" . "这里去百度申请ak" . "&ip=" . $ip);
$data = json_decode($ipadd);
return $data;
} /**
* 是否为手机端
* @return bool
*/
function is_Mobile()
{
// 如果有HTTP_X_WAP_PROFILE则一定是移动设备
if (isset($_SERVER['HTTP_X_WAP_PROFILE'])) {
return true;
}
// 如果via信息含有wap则一定是移动设备,部分服务商会屏蔽该信息
if (isset($_SERVER['HTTP_VIA'])) {
// 找不到为flase,否则为true
return stristr($_SERVER['HTTP_VIA'], "wap") ? true : false;
}
// 脑残法,判断手机发送的客户端标志,兼容性有待提高。其中'MicroMessenger'是电脑微信
if (isset($_SERVER['HTTP_USER_AGENT'])) {
$clientkeywords = array('nokia', 'sony', 'ericsson', 'mot', 'samsung', 'htc', 'sgh', 'lg', 'sharp', 'sie-', 'philips', 'panasonic', 'alcatel', 'lenovo', 'iphone', 'ipod', 'blackberry', 'meizu', 'android', 'netfront', 'symbian', 'ucweb', 'windowsce', 'palm', 'operamini', 'operamobi', 'openwave', 'nexusone', 'cldc', 'midp', 'wap', 'mobile', 'MicroMessenger');
// 从HTTP_USER_AGENT中查找手机浏览器的关键字
if (preg_match("/(" . implode('|', $clientkeywords) . ")/i", strtolower($_SERVER['HTTP_USER_AGENT']))) {
return true;
}
}
// 协议法,因为有可能不准确,放到最后判断
if (isset ($_SERVER['HTTP_ACCEPT'])) {
// 如果只支持wml并且不支持html那一定是移动设备
// 如果支持wml和html但是wml在html之前则是移动设备
if ((strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') !== false) && (strpos($_SERVER['HTTP_ACCEPT'], 'text/html') === false || (strpos($_SERVER['HTTP_ACCEPT'], 'vnd.wap.wml') < strpos($_SERVER['HTTP_ACCEPT'], 'text/html')))) {
return true;
}
}
return false;
} /**
* 提取富文本中的纯文字
* @param $string 富文本内容
* @return string
*/
function StringExtractionText($string)
{
// 把一些预定义的 HTML 实体转换为字符
// 预定义字符是指:,&等有特殊含义(,用于链接签,&用于转义),不能直接使用
$html_string = htmlspecialchars_decode($string);
// 将空格去除
$content = str_replace(" ", "", $html_string);
// 去除字符串中的 HTML 标签
$contents = strip_tags($content);
return $contents;
} /**
* 判断当前是否是微信浏览器
* 一般放在common中
* 返回1是,0否
*/
function isWeixin()
{
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MicroMessenger') !== false) {
return 1;
}
return 0;
}