elasticsearch 添加索引 和搜索

这篇博客展示了如何在 Laravel 中使用 Elasticsearch 客户端进行索引添加和搜索操作。首先,通过 POST 请求获取数据,然后连接到 Elasticsearch 集群并创建索引,数据包括标题、图片、图标和评论等字段。接着,实现了搜索功能,根据输入的标题进行匹配查询,并对搜索结果进行高亮显示。最后,将搜索结果返回给客户端。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

es添加索引

 public function add(Request $request)
    {
        //获取数据
        $data=$request->post();
//链接es
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        $params = [
            'index' => 'app',
            'type' => '_doc',
            'body' => [
                'title'=>$data['title'],
                'img'=>'bkt.clouddn.com/481d1d6fddeb8f15a7fe9ca3520f228d.png',
                'icon'=>$data['icon'],
                'comment'=>$data['comment'],
                'username'=>'星梦'
            ]
        ];
//返回索引数据
    $rea=$client->index($params);
    if ($rea){
//索引添加成功 添加数据库
   $res=Tack::insert([
        'username'=>'星梦',
        'title'=>$data['title'],
        'img'=>'bkt.clouddn.com/481d1d6fddeb8f15a7fe9ca3520f228d.png',
        'icon'=>$data['icon'],
        'comment'=>$data['comment']
    ]);
//返回数据
    return response()->json([
        'code'=>200,
        'msg'=>'添加成功',
        'data'=>$res,
    ]);
    }
    }

es 搜索

public function search(Request $request)
    {
//        搜索值
       $search=$request->input('title');
//      链接es
        $client=ClientBuilder::create()->setHosts(config('es.host'))->build();
        $params = [
//            数据库名 这里要改成索引
            'index' => 'app',
            'type' => '_doc',
            'body' => [
                'query' => [
                    'match' => [
//                        要搜索的字段 替换成你要搜所得字段
                        'title' => $search
                    ]
                ],
//           高亮显示操作
           'highlight'=>[

//              修改类型操作
              'pre_tags'=>["<span style='color: blue'>"],
              'post_tags'=>["</span>"],
                'fields'=>[
                    'title'=>new \stdClass(),
                ]
          ]

            ]
        ];
//        返回值
        $res=$client->search($params);
        //   将返回值进行处理操作
        $datas = $res['hits']['hits'];
//        $list=[];
//        循环查询数据
        foreach ($datas as &$v){
//            如果高亮搜索存在
//                那么进行数据替换
            $v['_source']['title']=$v['highlight']['title'][0];

        // 将数据添加之空数组
//           $data= array_push($list,$v['_source']);
        }
        $data=array_column($datas,'_source');
        return ['code'=>200,'msg'=>'搜索成功','data'=>$data];
//        $data=Tack::get();
//        return ['code'=>200,'msg'=>'搜索成功','data'=>$data];

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值