微信小程序配置laravel框架进行ES搜索并高亮展示

使用命令行开启ES功能

elasticsearch -d

进行 Composer 命令安装操作

composer require elasticsearch/elasticsearch

进行use一下

use Elasticsearch\ClientBuilder;

可以在config中封装一个es.php的文件

<?php
return [
  'host'=>['127.0.0.1:9200']
];

ES索引的创建(可以略过,添加的时候会自动创建)

//链接es
$client = ClientBuilder::create()->setHosts(config('es.host'))->build();
$params = [
   //索引名称
  'index'=>'news',
  'body'=>[
      'settings'=>[
        //分片操作
        'number_of_shards'=>5,
        'number_of_replicas'=>1
      ],
      'mappings'=>[
          '_doc'=>[
              '_source'=>[
                  'enabled'=>true,
              ],
              'properties'=>[
                  'fang_name'=>[
                      'type'=>'keyword'
                  ],
                   //es搜索操作
                  'fang_desn'=>[
                      'type'=>'text',
                      'analyzer'=>'ik_max_word',
                      'search_analyzer'=>'ik_max_word'
                  ]
              ]
          ]
      ]
  ]
];
$response = $client->indices()->create($params);

ES添加入库操作

//链接es
// ID 与 body内容不固定,可以自行更改
$client = ClientBuilder::create()->setHosts(config('es.host'))->build();
$params = [
    //索引名称
    'index'=>'news',
    //索引类型
    'type'=>'_doc',
    //id字段
    'id'=>$id['0']['id'],
    //需要添加内容
    'body'=>[
        'id' => 1,
        'title'=>$data['title'],
        'text'=>$data['text'],
        'date'=>$data['date'],
        'image'=>$data['image'],
    ]
];
//返回值
$client->index($params);

ES搜索功能(可进行高亮显示)

    // 搜索内容值
        $seach = $data['seach'];
        //  链接es操作
        $client = ClientBuilder::create()->setHosts(config('es.host'))->build();
        //     进行ES的搜索操作
        $params = [
        //数据库名 更换成你自己所创建的索引
            'index' => 'news',
            'type' => '_doc',
            'body' => [
                'query' => [
                    'match' => [
                        //要搜索的字段 替换成你自己所要查询额标签
                        'title' => $seach//要搜索的内容
                    ]
                ],
                //高亮显示操作
                'highlight' => [
                    'fields'=>[
                        'title'=>[
                            //修改类型操作
                            'pre_tags'=>[
                                '<span style="color: red">'
                            ],
                            'post_tags'=>[
                                '</span>'
                            ]
                        ]
                    ]
                ]
            ],
        ];
       //    返回值
        $res = $client->search($params);
        //   将返回值进行处理操作
        $datas = $res['hits']['hits'];
        // 进行循环处理操作
        foreach ($datas as $k => $v)
        {
            $datas[$k]['_source']['title'] = $v['highlight']['title'][0];
        }
        // 再次循环处理操作
        foreach ($datas as $val)
        {
            $data[] = $val['_source'];
        }
        // 将处理好的data值进行返回操作
        return success($data);

微信小程序记得写样式,引入富文本

<rich-text nodes="{{ itemp['titel'] }}">{{ itemp['titel'] }}</rich-text>
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值