elasticsearch简单调用高亮展示

本文介绍了如何开启Elasticsearch服务,通过127.0.0.1:9200检查服务状态。接着在TP5框架中使用Composer安装Elasticsearch扩展,并设置添加数据。最后,展示了从Elasticsearch获取数据并实现高亮显示的步骤。

1.开启服务

切换到ES的bin目录

双击elasticsearch.bat 启动elasticsearch服务

或者

2.通过访问127.0.0.1:9200,成功开启的话可看到

3.tp5 通过composer 安装对应扩展

composer require elasticsearch/elasticsearch

 4.设置并添加elasticsearch数据

//获取数据至elasticsearch
public function setEs()
{
    $client = ClientBuilder::create()->build();//获取客户端
    $data=\app\common\model\news::select();//获取数据库数据
    $data = (new Collection($data))->toArray();//将数据转换成数组格式
    foreach ($data as $k=>$v){
        $params = [
            'index' => 'news',//相当mysql数据库
        'type'=>'news',//数据表
            'body' => $v//数据

        ];
        $response  = $client->index($params);//数据插入elasticsearch

    }
    dump($response);//打印结果
}

5.获取elasticsearch中数据并修改高亮

//获取elasticsearch中数据
public function getEs()
{
    $seek = input('seek');//搜索条件字段
    $client = ClientBuilder::create()->build();//创建客户端
    $params = [
        'index' => 'news',//要查询的库名 要跟设置的一致
        'type' => 'news',//查询的表名 要跟设置的表名一致
        'body' => [
            'query' => [ //查询条件
                'match' => [ //进行匹配
                    'title' => $seek //匹配字段跟条件
                ]
            ],
            'highlight' => [ //设置高亮
                'pre_tags' => ["<span style='color: red'>"], //搜索文字前缀
                'post_tags' => ["</span>"], //搜索文字后缀
                'fields' => [
                    "title" => new \stdClass() //搜索字段
                ]
            ]
        ]
    ];
    $results = $client->search($params); //从客户端进行搜索
    foreach ($results['hits']['hits'] as $k => $v){ //从结果中找到信息进行循环
        $results['hits']['hits'][$k]['_source']['title'] = $results['hits']['hits'][$k]['highlight']['title'][0]; //将信息替换成高亮信息
    }
    $res = array_column($results['hits']['hits'],'_source');//取出所需数据
    print_r($res);//打印数据
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值