Elasticsearch使用Java环境所以需要先搭建Java环境
环境CentOS 7.6、Java10、Elasticsearch7.15.2

安装 Java环境

1、获取RPM安装包

wget http://file.alonesky.com/file/soft/jdk-10.0.2_linux-x64_bin.rpm

2、安装RPM包

sudo rpm -ivh jdk-10.0.2_linux-x64_bin.rpm

3、查看Java版本号(有版本号则表示安装成功)

java -version

配置系统变量

1、编辑系统变量

vi /etc/profile
// 文件末尾追加(Java路径不一致需修改)
export JAVA_HOME=/usr/java/jdk-10.0.2
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin

2、写入到缓存

source /etc/profile

安装Elasticsearch

1、获取RPM安装包

wget http://file.alonesky.com/file/soft/elasticsearch-7.15.2-x86_64.rpm

2、安装RPM包

sudo rpm -ivh elasticsearch-7.15.2-x86_64.rpm

3、编辑Elasticsearch配置文件

vi /etc/elasticsearch/elasticsearch.yml
// 取消以下几行注释
# 锁定内存
bootstrap.memory_lock: true 
# 本地访问 可改为0.0.0.0 外网访问
network.host: localhost 
# 端口
http.port: 9200

至此Elasticsearch已经安装完成

启动Elasticsearch服务

# 重载某个服务的配置文件
sudo systemctl daemon-reload
# 启用elasticsearch服务
sudo systemctl enable elasticsearch.service
# 开启elasticsearch
sudo systemctl start elasticsearch

Elasticsearch 启动的慢稍等一会

Elasticsearch不能启动处理

1、查看端口,检查 9200 端口是否成功启动

netstat -plntu

2、启动不起来可能是内存不够修改配置

vi /etc/elasticsearch/jvm.options

3、重启Elasticsearch服务

sudo systemctl restart elasticsearch

4、测试

curl localhost:9200
curl 外网IP:9200

安装中文分词

1、安装分词扩展

/usr/share/elasticsearch/bin/elasticsearch-plugin install https://file.alonesky.com/file/soft/elasticsearch-analysis-ik-7.15.2.zip

2、重新启动Elasticsearch服务

sudo systemctl restart elasticsearch

3、查看ik-analyzer的效果

curl -H 'Content-Type: application/json'  -XGET 'localhost:9200/_analyze?pretty' -d '{"analyzer":"ik_max_word","text":"今天天气真好"}'

4、增加自定义词库

vi /etc/elasticsearch/analysis-ik/IKAnalyzer.cfg.xml
// 在 ext_dict 中自定义一个词库文件 keywords.dic;
echo '日出的幻景' > /etc/elasticsearch/analysis-ik/keywords.dic

5、重新启动Elasticsearch服务

 sudo systemctl restart elasticsearch

代码安装Elasticsearch扩展

composer require elasticsearch/elasticsearch ~6.5.0

插入索引

$elasticsearchModel = new Elasticsearch();
$s_status = db('shop')->where('id', $shop_id)->value('status');
$is_clearkucun = db('shop')->where('id', $shop_id)->value('is_clearkucun');
$status = [
    'is_clearkucun' => $is_clearkucun,
    's_status' => $s_status,
    'status' => 0,
    'status_f' => 0,
    'on_sale' => 0,
];
$elasticsearchModel->insertIndexMore($goods_id, $name, $maidian, $content, $status);

更新索引

$elasticsearchModel = new Elasticsearch();
$s_status = db('shop')->where('id', $shop_id)->value('status');
$is_clearkucun = db('shop')->where('id', $shop_id)->value('is_clearkucun');
$goods_info = db('goods')->where('id', $goods_id)->field('name,maidian,content,status,status_f,on_sale')->find();
$status = [
    'is_clearkucun' => $is_clearkucun,
    's_status' => $s_status,
    'status' => input('status',0),
    'status_f' => input('status_f',0),
    'on_sale' => input('on_sale',0),
];
$elasticsearchModel->deleteIndex($goods_id);
$elasticsearchModel->insertIndexMore($goods_id, $goods_info['name'], $goods_info['maidian'], $goods_info['content'], $status);

删除索引

$elasticsearchModel = new Elasticsearch();
$elasticsearchModel->deleteIndex($goods_id);

使用搜索

$elasticsearchModel = new Elasticsearch();
$response = $elasticsearchModel->search($key_word, $page, $limit);
// dump($response);
if (!empty($response)) {
    $search_goods_id = array_column($response, '_id');
    // dump($search_goods_id);
    $where = ['id' => $search_goods_id];
    $goods_ids_str = implode(',', $search_goods_id);
    $order = "field(id," . $goods_ids_str . ")";
} else {
    $where= ['name', 'like', '%' . $key_word . '%'];
    $order = "sort desc";
}
$goods_list = db('goods')
    ->where($where)
    ->field('id,name,good_number,image,hot as sale,price')
    ->orderRaw($order)
    ->select();

附件下载:https://file.alonesky.com/file/soft/Elasticsearch.tar.gz
参考链接:http://blog.huati365.com/7a46ca39c9ab3b8a