当前位置: 首页 > article >正文

laravel es 相关代码 ElasticSearch

来源:

github




<?php

namespace App\Http\Controllers;

use Elastic\Elasticsearch\ClientBuilder;
use Illuminate\Support\Facades\DB;

class ElasticSearch extends Controller
{
    public $client = null;
    public function __construct()
    {
        $this->client = ClientBuilder::create()
            ->setHosts(["http://elasticsearch:9200"])
            ->setBasicAuthentication('elastic', "123456")
            ->build();
    }
    public function infos()
    {
        $response = $this->client->info();
        echo "<pre>";
        print_R($response);
    }
    // 创建分词索引
    public function esCreateIk()
    {
        $params = [
            'index' => 'ik',
            'body' => [
                'mappings' => [
                    'properties' => [
                        'content' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                        ],
                    ],
                ],
            ],
        ];

        $ik = $this->client->indices()->create($params);
        dd($ik->asArray());
    }
    //判断索引是否存在
    public function isIndex()
    {
        $index = $this->client->indices()->exists(
            ['index' => 'ik']
        )->asBool();
        dd($index);
    }
    //查看索引的的信息
    public function indexInfo()
    {
        $index = $this->client->indices()->getMapping(
            ['index' => 'ik']
        );
        dd($index->asArray());
    }
    //删除索引及数据
    public function indexDelete()
    {
        $index = $this->client->indices()->delete(
            ['index' => 'ik']
        );
        dd($index->asArray());
    }
    //删除索引下面id=1的数据
    public function esDelete()
    {
        $params = [
            'index' => 'ik',
            'id' => 1,
        ];
        $response = $this->client->delete($params);
        dd($response->asArray());
    }
    // 数据插入
    public function esCreateIkData()
    {
        $array = [
            'index' => 'ik',
            'type' => 'doc',
            'id' => 1,
            'body' => [
                'content' => '测试数据',
            ],
        ];
        $result = $this->client->index($array);
        dd($result);
    }
    // 批量插入数据
    public function eaCreateIkDataBulk()
    {

        set_time_limit(0);
        $data = DB::table('faq')->get();
        // 一条一条插入
        foreach ($data as $key => $value) {
            $array['body'][] = ['index' => ['_index' => 'ik', '_id' => $value->id]];
            $array['body'][] = ['content' => $value->content];
        }
        $result = $this->client->bulk($array);
        dd($result);
    }
    // 查询当前索引下有多少数据
    public function esCountData()
    {
        $params = [
            'index' => 'ik',
        ];
        echo $this->client->count($params);
    }
    /**
     * 查询 ik 下面所有数据
     * 默认返回最多10数据
     */
    public function esIkSearch()
    {
        $query = [
            'index' => 'ik',
            // 'id' => 1, // 查询id 的话就加这个字段
        ];
        $result = $this->client->search($query);
        dd($result->asArray());
    }
    /**
     * 查询 ik 下面数据 加各种条件
     *
     */
    public function esIkSearchWhere()
    {
        $query = [
            'index' => 'ik',
            'body' => [
                'query' => [
                    'match' => [
                        'content' => '被骗了几千块钱,有微信怎么要回来'
                    ]
                ]
            ],
            '_source' => ['content'], //目前只有content 如果字段多了 想要那个返回哪个。可以不设置。默认返回所有数据 
            'size' => 5, //设置一次返回5条数据、可以不设置
            'from' => 2, //从第几条开始 类似于limit 5,2 可以不设置
        ];
        $result = $this->client->search($query);
        dd($result->asArray());
    }
    /**
     * 修改数据
     * 把 ik 下面 id=1 的content 修改
     */
    public function esIkedit()
    {
        $query = [
            'index' => 'ik',
            'id' => 1,
            'body' => [
                'doc' => [
                    'content' => '修改数据'
                ],
            ],
        ];
        $result = $this->client->update($query);
        dd($result);
    }
}


在这里插入图片描述


    Route::get("es/info", [ElasticSearch::class, "infos"]); //ES信息
    Route::get("es/create_ik", [ElasticSearch::class, "esCreateIk"]); // 创建分词索引
    Route::get("es/delete", [ElasticSearch::class, "esDelete"]); //删除索引的里面的某条数据
    Route::get("es/indexDelete", [ElasticSearch::class, "indexDelete"]); //删除索引
    Route::get("es/esCreateIkData", [ElasticSearch::class, "esCreateIkData"]); //插入数据
    Route::get("es/eaCreateIkDataBulk", [ElasticSearch::class, "eaCreateIkDataBulk"]); //批量插入数据
    Route::get("es/esIkSearch", [ElasticSearch::class, "esIkSearch"]); //返回所有数据
    Route::get("es/esIkSearchWhere", [ElasticSearch::class, "esIkSearchWhere"]); //加查询条件,返回所有数据

http://www.kler.cn/a/579250.html

相关文章:

  • olmOCR:高效精准的 PDF 文本提取工具
  • Deeplabv3+改进5:在主干网络中添加EMAattention|助力涨点!
  • WIFI ESP8266以及基础功能介绍
  • Python与SQL深度融合实战案例:打造你的数据处理秘籍
  • firewalld富规则配置黑名单
  • 小程序事件系统 —— 34 事件传参 - mark - 自定义数据
  • NXP MPC574x EE模拟-数据结构
  • VBA信息获取与处理第五节:如何在单个工作表中查找某个给定值
  • JAVA入门——网络编程简介
  • 游戏引擎学习第141天
  • 蓝桥杯 砍柴
  • 2025科技项目申报预测月历来啦!
  • 【AI】AI开源IDE:CLine源码分析报告
  • 达梦数据库导入数据,通过命令的方式
  • Windows 11下Git Bash执行cURL脚本400问题、CMD/PowerShell不能执行多行文本等问题记录及解决方案
  • V8引擎中的垃圾回收机制如何工作?
  • 删除或替换 Word 中的首页、尾页以及其它指定范围的页
  • 周末总结(2024/03/08)
  • 《C++ 构造、拷贝构造与析构函数:对象的诞生、克隆与消逝之旅》
  • 使用joblib 多线程/多进程