ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

elasticsearch简单的增删改查与高亮显示

2021-04-13 18:04:36  阅读:144  来源: 互联网

标签:高亮 title doc 改查 where elasticsearch data id es


高亮显示

 public function search_doc()
    {
        $where='图形';
        $es = new ES('es');
        $index_name = "es";
        $type_name = "es";
        $body = [
            'query' => [
                'bool' => [
                    'should' => [
                        [
                            'match' => [
//                                搜索的字段名
                                'title' => [
                                    //搜索的关键字
                                    'query' => $where,
                                    'boost' => 4, // 权重大
                                ]
                            ],

                        ],
                        [
                            'match' => [
                                'content' => [
                                    'query' => $where,
                                    'boost' => 3, // 权重大
                                ]
                            ],

                        ],

                    ],
                ]

            ]];
        $response= $es->search_doc($index_name, $type_name, $body);
        $data  = array_column($response,"hits");
        $data  = array_column($data[0],"_source");
        foreach ($data as $key => &$val){
            $val['title']=str_replace($where,"<span style='color: red'>$where</span>",$val['title']);
        }
        //可以将数据发送到视图
        print_r($data);

 

 

简单的增删改查

<?php

namespace app\es\controller;

use app\common\lib\ES;

use NunoMaduro\Collision\Highlighter;
//use NunoMaduro\Collision\Contracts\Highlighter;
use think\Controller;
use think\Db;
use think\Exception;
use think\Request;
use Elasticsearch\ClientBuilder;

class Esone extends Controller
{


    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {

        //创建索引  索引名称不能重复 否则报错
        $es = new ES('es');
        //你要创建的索引名称
        $index_name = "es1";
        $es->create_index($index_name);
    }



    //添加数据
    public function create()
    {
        //
        $es = new ES('es');
        $params = [
            'index' => "es1",
            'id' => '1',
            'type' => "article",
            "body" => [
                "title" => "我是第一次添加的数据article1",
                'desn' => "我是第一次添加的数据desn1"]
        ];
        $es->add_doc($params);
    }

//    根据id修改es中的数据
    public function update()
    {
        //
        $es = new ES('es');
        $params = [
            'index' => "es1",
            'type' => "article",
            'id' => "1",
            "body" => [
                "doc" => [
                    "title" => "6100万颗心的共同记忆 再次C位亮相,闪耀全球!",
                    "desn" => "刚刚过去的这个清明节,与往年一样,有人凭寄哀思,有人缅怀忠魂。但也有一些瞬间,让人记起久久不能释怀,给这个特殊节气增添了一些格外不同的味道。"
                ]
            ]
        ];
        $es->update_doc($params);


    }

    //获取文档  搜索数据
    public function selects()
    {
        $es = new ES('es');
        $a = $es->get_doc('1', 'es1', 'article');
        dump($a);

    }

    //删除  根据id删除数据
    public function delete()
    {
        //
        $es = new ES('es');
        $a = $es->delete_doc('1', 'es1', 'article');
        //删除成功
        dump($a);

    }


    //表单实现数据添加


    public function add()
    {
        //渲染视图

        return view('inex');
    }

    public function addData(Request $request)
    {
        //接受数据
        $data = $request->param();
        //验证
        //添加数据
        //数据库
        try {
            //
            $data = \app\es\model\Es::create($data);
            //将数据添加到es中
            $es = new ES('es');
            $params = [
                //索引名
                'index' => "es",
                //相当于数据库
                'type' => "es",
                //id
                'id' => $data['id'],
                "body" => [
                    "title" => $data['title'],
                    "content" => $data['content'],
                    "desn" => $data['desn'],
                ]
            ];
            $es->add_doc($params);
        } catch (Exception $exception) {
            return join(['code' => 200, 'msg' => $exception->getMessage(), 'data' => ""]);
        }

        return join(['code' => 200, 'msg' => '添加成功', 'data' => $data]);
    }

    //查询数据 一条数据
    public function select(Request $request)
    {
        //要搜索的id值
        $id = '5';
        $es = new ES('es');
        //查询数据
        $a = $es->get_doc($id, 'es', 'es');
        print_r($a);
    }

    public function search_doc()
    {
        $where='图形';
        $es = new ES('es');
        $index_name = "es";
        $type_name = "es";
        $body = [
            'query' => [
                'bool' => [
                    'should' => [
                        [
                            'match' => [
//                                搜索的字段名
                                'title' => [
                                    //搜索的关键字
                                    'query' => $where,
                                    'boost' => 4, // 权重大
                                ]
                            ],

                        ],
                        [
                            'match' => [
                                'content' => [
                                    'query' => $where,
                                    'boost' => 3, // 权重大
                                ]
                            ],

                        ],

                    ],
                ]

            ]];
        $response= $es->search_doc($index_name, $type_name, $body);
        $data  = array_column($response,"hits");
        $data  = array_column($data[0],"_source");
        foreach ($data as $key => &$val){
            $val['title']=str_replace($where,"<span style='color: red'>$where</span>",$val['title']);
        }
        //可以将数据发送到视图
        print_r($data);

    }

}

 

标签:高亮,title,doc,改查,where,elasticsearch,data,id,es
来源: https://www.cnblogs.com/cyxng/p/14654522.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有