首页 > 其他分享 >laravel8 elasticsearch 配置搭建使用

laravel8 elasticsearch 配置搭建使用

时间:2023-04-03 18:33:16浏览次数:40  
标签:index return laravel8 param elasticsearch 搭建 type id name

 

laravel 8框架  扩展elasticsearch 

 

首先 elasticsearch 的版本号 需要和 扩展的版本号对应

composer require elasticsearch/elasticsearch

 

然后是配置到common 调用文件

复制代码
<?php
namespace App\Es;

use Elasticsearch\ClientBuilder;

class MyEs
{
    //ES客户端链接
    private $client;

    /**
     * 构造函数
     * MyElasticsearch constructor.
     */
    public function __construct()
    {
          // 带有账号、密码的客服端信息           $hosts = [               [                   'host' => '127.0.0.1',      // 域名                   'port' => '9200',           // 端口                   'scheme' => 'http',         // 协议                   'user' => 'elastic',        // 账号                   'pass' => '123456'         // 密码               ]           ];
          $this->client = ClientBuilder::create()->setHosts($hosts)->build();
    }

    /**
     * 判断索引是否存在
     * @param string $index_name
     * @return bool|mixed|string
     */
    public function exists_index($index_name = 'test_ik')
    {
        $params = [
            'index' => $index_name
        ];
        try {
            return $this->client->indices()->exists($params);
        } catch (\Elasticsearch\Common\Exceptions\BadRequest400Exception $e) {
            $msg = $e->getMessage();
            $msg = json_decode($msg,true);
            return $msg;
        }
    }

    /**
     * 创建索引
     * @param string $index_name
     * @return array|mixed|string
     */
    public function create_index($index_name = 'test_ik') { // 只能创建一次
        $params = [
            'index' => $index_name,
            'body' => [
                'settings' => [
                    'number_of_shards' => 5,
                    'number_of_replicas' => 1
                ]
            ]
        ];
        try {
            return $this->client->indices()->create($params);
        } catch (\Elasticsearch\Common\Exceptions\BadRequest400Exception $e) {
            $msg = $e->getMessage();
            $msg = json_decode($msg,true);
            return $msg;
        }
    }

    /**
     * 删除索引
     * @param string $index_name
     * @return array
     */
    public function delete_index($index_name = 'test_ik') {
        $params = ['index' => $index_name];
        $response = $this->client->indices()->delete($params);
        return $response;
    }

    /**
     * 添加文档
     * @param $id
     * @param $doc ['id'=>100, 'title'=>'phone']
     * @param string $index_name
     * @param string $type_name
     * @return array
     */
    public function add_doc($id,$doc,$index_name = 'test_ik',$type_name = 'goods') {
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'id' => $id,
            'body' => $doc
        ];
        $response = $this->client->index($params);
        return $response;
    }

    /**
     * 判断文档存在
     * @param int $id
     * @param string $index_name
     * @param string $type_name
     * @return array|bool
     */
    public function exists_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'id' => $id
        ];
        $response = $this->client->exists($params);
        return $response;
    }

    /**
     * 获取文档
     * @param int $id
     * @param string $index_name
     * @param string $type_name
     * @return array
     */
    public function get_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'id' => $id
        ];
        $response = $this->client->get($params);
        return $response;
    }

    /**
     * 更新文档
     * @param int $id
     * @param string $index_name
     * @param string $type_name
     * @param array $body ['doc' => ['title' => '苹果手机iPhoneX']]
     * @return array
     */
    public function update_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods', $body=[]) {
        // 可以灵活添加新字段,最好不要乱添加
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'id' => $id,
            'body' => $body
        ];
        $response = $this->client->update($params);
        return $response;
    }

    /**
     * 删除文档
     * @param int $id
     * @param string $index_name
     * @param string $type_name
     * @return array
     */
    public function delete_doc($id = 1,$index_name = 'test_ik',$type_name = 'goods') {
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'id' => $id
        ];
        $response = $this->client->delete($params);
        return $response;
    }

    /**
     * 搜索文档 (分页,排序,权重,过滤)
     * @param string $index_name
     * @param string $type_name
     * @param array $body
     * $body = [
                'query' => [
                    'match' => [
                        'fang_name' => [
                            'query' => $fangName
                        ]
                    ]
                ],
                'highlight'=>[
                    'fields'=>[
                        'fang_name'=>[
                            'pre_tags'=>[
                                '<span style="color: red">'
                            ],
                            'post_tags'=>[
                                '</span>'
                            ]
                        ]
                    ]
                ]
            ];
     * @return array
     */
    public function search_doc($index_name = "test_ik",$type_name = "goods",$body=[]) {
        $params = [
            'index' => $index_name,
            'type' => $type_name,
            'body' => $body
        ];
        $results = $this->client->search($params);
        return $results;
    }

}
复制代码

 

在 其他文件中调用

 

复制代码
use App\Service\Common\ElasticSearchService;

    public function elastic(){
        $keywords = $this->request->get('keywords');

        $body =  [
            'size'   => 20,
            'from'   => 0,
            'query' => [
                'match' => [
                    'title' => '衣服'
                ]
            ],
            'sort' => ['_score'=>['order'=>'desc']],
        ];

        $res = resolve(ElasticSearchService::class)->search_doc('fulan','goods', $body);

        return $res;
    }
复制代码

 

 

此处 感谢 https://learnku.com/articles/66177 的博客

标签:index,return,laravel8,param,elasticsearch,搭建,type,id,name
From: https://www.cnblogs.com/yzl042349/p/17283994.html

相关文章

  • linux安装Elasticsearch详细步骤
     坑都已经踩好了 照着步骤一次成功  不多废话 走起# ## 安装java运行环境elasticsearch是用Java实现的 跑elasticsearch必须要有jre支持 所以必须先安装jre传送门:# ## 安装elasticsearch-7.8.1也可以去官网下载 https://www.elastic.co/cn/downloads/elasti......
  • linux 安装 elasticsearch-head
      安装Head插件由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。<1>安装Node.js下载解压 //下载node安装包wgethttps://nodejs.org/dist/v6.10.2/node-v6.10.2-linux-x64.tar.xz//解压安装包tarxvfnode-v6.10.2-linux-x64.tar.......
  • ZLMediaKit + wvp-GB28181-pro 流媒体服务搭建
    目录环境备部署基础环境配置修改ZLMediaKit配置文件WVP-PRO的mysql数据库配置wvp-GB28181-pro配置wvp-pro-assist配置部署后端服务前端服务摄像头接入配置示例大华接入海康接入环境备1、服务运行环境,Linux/OSX/Windows均可,但推荐Linux2、海康、大华等符合国标28181标准......
  • windows下elk安装配置-elasticsearch/kibana/filebeat
    以8.6.2为例,下载地址elasticsearch:https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.6.2-windows-x86_64.zipkibana:https://artifacts.elastic.co/downloads/kibana/kibana-8.6.2-windows-x86_64.zipfilebeat:https://artifacts.elastic.co/downloads/beats......
  • ceph分布式存储搭建
    CEPH分布式存储搭建本文通过参考臧雪园老师的文档根据实际操作做修改,详细视频链接参考:https://edu.51cto.com/course/15982.html集群配置信息:安装的ceph版本:配置所需源的地址wget-O/etc/yum.repos.d/CentOS-Base.repohttp://mirrors.aliyun.com/repo/Centos-7.re......
  • ESP32的VS Code环境搭建
         安装失败的时候需要更换PIP源1.在运行窗口或资源管理器中输入%APPDATA%  2.进入目录后,新建一个文件夹pip,并在该文件夹里面新建文件pip.ini,并输入以下内容:  文本内容如下所示:[global]timeout=6000index-url=https://pypi.tuna.tsinghua.edu.cn/si......
  • Elasticsearch系列-Elasticsearch集群工作原理
    引言ELasticsearch作为一个分布式搜索引擎,能够出色地支持集群模式、动态水平扩容、故障转移等分布式系统特性,这是其作为全文搜索引擎首选的重要原因。本文从零开始描述集群的配置和扩容过程,让你对Elasticsearch集群的工作原理有初步的理解。首先,一个Elasticsearch集群时由多个节点......
  • Elasticsearch系列-Elasticsearch入门教程
    引言Elasticsearch是著名的开源分布式搜索和数据处理平台,是一个基于Lucene的分布式、实时、全文搜索系统,其稳定、可靠、高可用、可大规模扩展等特性,使得Elasticsearch的应用十分广泛。特别是结合Logstash、Kibana形成的ELK套件,更是在日志收集和可视化场景被大规模应用。本文将从零......
  • 搭建直播平台,android 如何得到本地视频的缩略图
    搭建直播平台,android如何得到本地视频的缩略图 publicclassVideoThumbUtils{  /**   *得到视屏的缩略图   *   *@paramvideoPath   *@paramwidth   *@paramheight   *@return   */  publicstaticBitmapgetVideoThum......
  • git服务器搭建过程以及遇到的问题
    git自动化部署在Git服务器上为用户配置SSH公钥git@Linux:~$mkdir.sshgit@Linux:~$touch.ssh/authorized_keysgit@Linux:~$chmod600.ssh/authorized_keysgit@Linux:~$authorized_keys文件可以保存多个用户的SSH公钥,所有公钥被添加到这个文件中的用户,就都可......