Centos安装elasticsearch,php连接使用
一.下载安装JAVA
下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
# 如果用`wget`方式下载解压时会出现错误`gzip: stdin: not in gzip format`
# 这里建议在浏览器里下载后传到服务器上,去Oracle官网下载过jdk的童鞋应该都知道,
# 下载之前需要同意Oracle的安装协议,不然不能下载,但是用wget的方式,默认是不同意,
# 虽然能下载下来,但是下载下来的文件会有问题,所以在Linux上解压一直失败。
tar -xzvf jdk-13.0.1_linux-x64_bin.tar.gz
vim /etc/profile
export JAVA_HOME=/www/soft/java/jdk-13.0.1
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
source /etc/profile
# ln -s /www/soft/java/jdk-13.0.1/bin/java /usr/bin/java
java -version
二.下载安装ElasticSearch
下载地址:https://www.elastic.co/cn/downloads/elasticsearch
wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.4.2-linux-x86_64.tar.gz
tar -xzvf elasticsearch-7.4.2-linux-x86_64.tar.gz
# elasticsearch不能用root用户运行,要先创建用户
groupadd www
useradd -g www www
chown -R www:www *
su www
cd /www/soft/elasticsearch/elasticsearch-7.4.2
sh bin/elasticsearch -d
ps -ef | grep elastic
curl http://127.0.0.1:9200
# 出现如下数据,说明elasticsearch已经搭建好了
{
"name" : "hckj998",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "vDHMfXLhR_aha7EOeClebg",
"version" : {
"number" : "7.4.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "2f90bbf7b93631e52bafb59b3b049cb44ec25e96",
"build_date" : "2019-10-28T20:40:44.881551Z",
"build_snapshot" : false,
"lucene_version" : "8.2.0",
"minimum_wire_compatibility_version" : "6.8.0",
"minimum_index_compatibility_version" : "6.0.0-beta1"
},
"tagline" : "You Know, for Search"
}
三.设置开机启动
cd /www/soft/elasticsearch/elasticsearch-7.4.2
#在bin目录下新建start.sh
vim start.sh
#!/bin/bash
cd /www/soft/elasticsearch/elasticsearch-7.4.2
su www -c "sh bin/elasticsearch -d"
#在bin目录下新建stop.sh
vim stop.sh
#!/bin/bash
ps -ef | grep elasticsearch | grep -v grep | awk '{print $2}' | xargs kill -9
vim /etc/rc.d/rc.local
#在/etc/rc.d/rc.local尾部添加一行
/www/soft/elasticsearch/elasticsearch-7.4.2/start.sh
#修改权限
chmod +x /etc/rc.d/rc.local
#查看rc.local服务的状态
systemctl list-units --type=service
#如果改服务显示failed,则需要开启该服务
systemctl status rc-local.service
#如果上面的命令这里出现Active: failed (Result: exit-code)
#则说明启动脚本有问题,根据错误提示,修改start.sh脚本就行
#最后开启服务器
systemctl enable rc-local.service
四.安装ik中文分词
wget https://github.com/medcl/elasticsearch-analysis-ik/releases/download/v7.4.2/elasticsearch-analysis-ik-7.4.2.zip
cd /www/soft/elasticsearch
elasticsearch-7.4.2/bin/elasticsearch-plugin install -b file:///www/soft/elasticsearch/elasticsearch-analysis-ik-7.4.2.zip
五.验证
#创建索引
curl -X PUT http://127.0.0.1:9200/test_index?pretty -v -H "Content-Type: application/json" -d '
{
"settings": {
"number_of_shards": 1,
"number_of_replicas": 0
},
"mappings": {
"_source": {
"enabled": true
},
"properties": {
"id": {
"type": "integer"
},
"title": {
"type": "text",
"analyzer": "ik_max_word"
},
"image": {
"type": "text"
},
"author": {
"type": "text",
"analyzer": "ik_max_word"
},
"words": {
"type": "integer"
},
"description": {
"type": "text",
"analyzer": "ik_max_word"
},
"type_name": {
"type": "text"
}
}
}
}
'
#查看所有索引
curl -XGET http://localhost:9200/_aliases?pretty
curl -XGET '127.0.0.1:9200/_cat/indices?pretty'
#查看索引定义
curl -XGET "http://127.0.0.1:9200/test_index?pretty"
#查看索引mapping
curl -XGET "http://127.0.0.1:9200/test_index/_mapping?pretty"
#删除索引
curl -XDELETE "http://127.0.0.1:9200/test_index?pretty"
#获取文档数量
curl -XPOST "http://127.0.0.1:9200/poetry/_doc/count" -H "Content-Type: application/json" -d '
{
"query": {
"match_all": {}
}
}'
#查询所有文档
curl -XGET "http://127.0.0.1:9200/poetry/_search" -v -H "Content-Type: application/json" -d '
{
"query": {
"match_all": {}
}
}'
#删除所有文档
curl -XPOST "http://127.0.0.1:9200/student/_delete_by_query?pretty" -v -H "Content-Type: application/json" -d '
{
"query": {
"match_all": {}
}
}'
#删除索引
curl -XDELETE "http://127.0.0.1:9200/student?pretty"
#查询id为10的文档
curl -XGET "http://127.0.0.1:9200/poetry/_doc/10"
.....剩余的操作请参考官网文档:
https://www.elastic.co/guide/en/elasticsearch/reference/6.0/indices.html
六.php使用
安装elasticsearch库, composer地址: https://packagist.org/packages/elasticsearch/elasticsearch
composer require elasticsearch/elasticsearch
php使用官方文档: https://www.elastic.co/guide/cn/elasticsearch/php/current/_quickstart.html
简单的封装
<?php
namespace app\util\elsearch;
use Elasticsearch\Common\Exceptions\Missing404Exception;
use Elasticsearch\ClientBuilder;
/**
* Class ELSearch
* 封装ELSearch增删改查操作
* @package app\util\elsearch
*/
class ELSearch
{
//获取ELSearch客户端对象
public static function client() {
return $client = ClientBuilder::create()
->setHosts(config('util.elastic_search_host'))
->build();
}
//删除某一个文档
public static function delDoc($index, $id) {
$params = [
'index' => $index,
'type' => '_doc',
'id' => $id
];
$response = self::client()->delete($params);
return $response;
}
//删除索引下的所有文档
public static function delAllDoc($index) {
$params = [
'index' => $index,
'type' => '_doc',
'body' => [
'query' => [
'bool' => [
'must_not' => ['term' => [ 'id' => -1000 ]],
]
]
]
];
$response = self::client()->deleteByQuery($params);
return $response;
}
//获取文档
public static function getDoc($index, $id) {
$params = [
'index' => $index,
'type' => '_doc',
'id' => $id
];
try {
$response = self::client()->get($params);
return $response['_source'];
} catch (Missing404Exception $e) {
return null;
}
}
//更新文档
public static function updateDoc($index, $id, $data) {
$params = [
'index' => $index,
'type' => '_doc',
'id' => $id,
'body' => [
'doc' => $data
]
];
return self::client()->update($params);
}
//添加文档
public static function addDoc($index, $id, $data) {
$params = [
'index' => $index,
'type' => '_doc',
'id' => $id,
'body' => $data
];
$response = self::client()->index($params);
return $response;
}
//删除索引
public static function delIndex($index) {
//先删除索引下所有的文档
self::delAllDoc($index);
//再删除索引
$params = ['index' => $index];
$response = self::client()->indices()->delete($params);
return $response;
}
//创建索引
public static function newIndex($index, $fields) {
$params = [
'index' => $index,
'body' => [
'settings' => [
'number_of_shards' => 1,
'number_of_replicas' => 0
],
'mappings' => [
'_source' => [
'enabled' => true
],
'properties' => $fields
]
]
];
$response = self::client()->indices()->create($params);
return $response;
}
}
Centos安装elasticsearch,php连接使用的更多相关文章
- CENTOS安装ElasticSearch(转)
From: https://my.oschina.net/topeagle/blog/591451?fromerr=mzOr2qzZ CENTOS安装ElasticSearch ElasticSear ...
- CENTOS安装ElasticSearch
原文链接:https://my.oschina.net/topeagle/blog/591451?fromerr=mzOr2qzZ CENTOS安装ElasticSearch ElasticSearc ...
- Centos安装elasticsearch教程
elasticsearch安装是ytkah在做laravel电商站内搜索要实现的,通过自己的搜索和学习能力不算很费力解决了.下面就整理一下安装elasticsearch教程,服务器是Centos 7, ...
- centos安装Elasticsearch步骤
1.安装JDK:centos删除openJDK,安装JDK,vim /etc/profile配置JAVA_HOME 2.官网下载elasticsearch:https://www.elastic.co ...
- centos安装及Xshell连接配置
一.百度下载并安装VMware 二.下载centos 打开https://www.centos.org,点击“get centos now”,点击“DVD ISO”下载(也可以下滑点击“more do ...
- CentOS 安装 Ansible 以及连接Windows server的办法
1. CentOS机器上面按住那ansible yum install ansible 2. 安装 pywinrm 如果不安装 这个的话 ansible 会提示 没有 winrm 模块 注意需要先 ...
- centos 安装xrdp远程连接桌面
1. 安装epel库,否则无法安装xrdp yum install epel-release 2.安装 xrdp yum install xrdp 3. 安装tigervnc-server yum i ...
- centos安装redis +RedisDesktopManager连接redis
1.先到Redis官网(redis.io)下载redis安装包 wget http://download.redis.io/releases/redis-5.0.4.tar.gztar xzf red ...
- CentOS 安装 elasticsearch 注意点
注意点: 1. 从官网下载以 rpm 结尾的软件包 7.3.1版本 下载地址: https://artifacts.elastic.co/downloads/elasticsearch/elastic ...
随机推荐
- NSString的创建
create #progma mark create NSString void stringCreate(){ //char *s="A String";->c NSSt ...
- openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库
openpyxl -用于读/写Excel 2010 XLSX/XLSM文件的python库¶ https://www.osgeo.cn/openpyxl/index.html
- ImportError: No module named pytz
xxx@hostname:/opt/xx/cc$ python manage.py runserver Traceback (most recent call last): File , in < ...
- redis之不重启,切换RDB备份到AOF备份
确保redis版本在2.2以上 [root@pyyuc /data 22:23:30]#redis-server -v Redis server v=4.0.10 sha=00000000:0 mal ...
- Ubuntu14.04 dd命令克隆系统镜像安装到另一台机器上
linux系统如果想做备份还原,使用ghost的时候经常出现问题,后来发现可以直接使用dd命令完成硬盘的克隆和还原.当拷贝完硬盘后,就可以拿这个硬盘放到其它设备上跑了.也就是完成了“烧写”了. 用U盘 ...
- input上传mp3格式文件,预览并且获取时间
<input type="file" id="file" name="file" class="upfile" o ...
- CF1208C
CF1208C 这场杜老师大战tourist的比赛怎么这么多人类智慧题... 题意: 构造一个 $ n \times n $ 的矩阵,使得该矩阵每一行与每一列的元素的异或和全部相等. 解法: 异或的神 ...
- instr和like的使用区别
1.instr函数 instr函数是一个字符串处理函数,它在Oracle/PLSQL中是返回子字符串在源字符串中的位置,如果在源串中没有找到子串,则返回0. instr函数定义如下: /* * 返回子 ...
- Flask-login 例子
################################################################################ from flask.ext.logi ...
- Object.keys() 遍历对象
Object.keys()方法的运用与数组遍历 Object.keys()用于获得由对象属性名组成的数组,可与数组遍历相结合使用,用起来效果杠杠滴.数组遍历可以用for()或forEach()来实现, ...