Laravel Elasticsearch 

启动Elasticsearch :进入Elasticsearch文件bin目录     命令行运行elasticsearch.bat

设置Elasticsearch端口号      进入Elasticsearch文件内      进入config      打开图内文件进行修改

框架安装 Elasticsearch

进入项目根目录   执行composer安装   composer require 'elasticsearch/elasticsearch'

控制器引用相关类    use Elasticsearch\ClientBuilder;

创建index

$params = [

  'index' => 'myindex', #index的名字不能是大写和下划线开头

  'body' => [

    'settings' => [

      'number_of_shards' => 2,

      'number_of_replicas' => 0

    ]

  ]

];

$client->indices()->create($params);

创建index下的表:

$params = [

  'index' => 'myindex',//index索引(相当于数据库名)

  'type' => 'mytype',//type值(相当于表名,一个库对应一个表)

  'body' => [

    'mytype' => [

      '_source' => [

        'enabled' => true  //字段规则

      ],

      'properties' => [

        'id' => [

          'type' => 'integer' //字段规则

        ],

        'first_name' => [

          'type' => 'text',  //字段规则

          'analyzer' => 'ik_max_word'  //字段规则

        ],

        'last_name' => [

          'type' => 'text',  //字段规则

          'analyzer' => 'ik_max_word'

        ],

        'age' => [

          'type' => 'integer'

        ]

      ]

    ]

  ]

];

$client->indices()->putMapping($params);

添加数据:

$params = [

  'index' => 'myindex',

  'type' => 'mytype',

  //'id' => 1, #可以手动指定id,也可以不指定随机生成

  'body' => [

    'first_name' => '张',

    'last_name' => '三',

    'age' => 35

  ]

];

$client->index($params);

然后编写方法,例:

创建索引并添加:

public function esInput($data,$id){
        $client = ClientBuilder::create()->setHosts(['127.0.0.1:9301'])->build();

$params = [
          'index' => 'test',
          'type' => 'teachers',
          'id' => $id, #可以手动指定id,也可以不指定随机生成
          'body' => [
            'name' => $data['name'],
            'desc'=>$data['desc']
          ]
        ];
        $res=$client->index($params);
        return $res;
    }

获取数据库所有数据:

public function es(){
        $client = ClientBuilder::create()->setHosts(['127.0.0.1:9301'])->build();
        $params = [
          'index' => 'test',
        // 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
          'type' => 'teachers',
          '_source' => ['name','desc'], // 请求指定的字段
          'body' => array_merge([
            'from' => 0,
            'size' => 5
          ])
        ];
        $data = $client->search($params);
        return $data['hits']['hits'];
    }

//检索($query内为检索规则,match匹配,字段名对应搜索内容)

$query = [
          'query' => [
                'match'=>[
                    'name'=>'ken'
                ],
          ],
        ];

        $params = [
          'index' => 'test',
        // 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
            // '_id'   =>'teachers10',
          'type' => 'teachers',
          '_source' => ['name','desc'], // 请求指定的字段
          'body' => array_merge([
            'from' => 0,
            'size' => 5
          ],$query)
        ];

//高亮显示方法

public function esInput(Request $request){
        //连接es
        $client = ClientBuilder::create()->setHosts([config('setting.es.sethost')])->build();
        //接收参数
        $param=$request->input('fang_name')?:"";

if(!empty($param)){
            //传入数据进行关键词搜索
            $params = [
              'index' => 'fang',
            // 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
              'type' => 'fangs',
              '_source' => ['fang_name','fang_addr','created_at','updated_at'], // 请求指定的字段
              'body' => [
                'query' => [
                    'match' => [
                      'fang_name' =>$param,
                    ]
              ],
              'highlight' => [
                        'pre_tags' => ["<span style='color: red'>"],
                        'post_tags' => ["</span style='color: red'>"],
                        'fields' => [
                            "fang_name" => new \stdClass()
                        ]
                    ]
              ]
            ];

}else{
            //如果为传入数据进行查询所有
            $params = [
              'index' => 'fang',
            // 'index' => 'm*', #index 和 type 是可以模糊匹配的,甚至这两个参数都是可选的
              'type' => 'fangs',
              '_source' => ['fang_name','fang_addr','created_at','updated_at'], // 请求指定的字段
              'body' => array_merge([
                'from' => 0,
                'size' => 5
              ])
            ];      
        }
        
        $arr=[];
        $data = $client->search($params);
       
       //取出搜索获得的数据进行循环处理
        foreach ($data['hits']['hits'] as $value) {
            //高亮显示的数据和原数据替换
            $value['_source']['fang_name']=$value['highlight']['fang_name'][0];
            //加入新的数组
            $arr[]=$value['_source'];
        }

dd($arr);
    }

指定id单条查询

$params = [

  'index' => 'myindex',

  'type' => 'mytype',

  'id' =>'zU65WWgBVD80YaV8iVMk'//此处为存储的id值

];

$data = $client->get($params);

Laravel Elasticsearch相关推荐

  1. Laravel + Elasticsearch 实现中文搜索

    安装Elasticsearch-php https://github.com/elastic/elasticsearch-php 使用composer安装: 在项目目录下,执行以下命令 compose ...

  2. php to es7,只需五步 集成新版 Elasticsearch7.9 中文搜索 到你的 Laravel7 项目

    只需五步骤: 启动 集成 ik 中文分词插件的 Elasticsearch7.9 Docker 镜像 Laravel7 配置 Scout 配置 Model 模型 导入数据 搜索 PHP进阶30K资料, ...

  3. es中修改某个字段值_搜索引擎之laravel中使用elasticsearch(一)

    一.概述 Elasticsearch官方提供了Composer包可直接引用就好,不过要注意:如果你使用的elastcsearch不是最新的那么我建议你指定合适的版本下载,而不要采用最新的,因为不同版本 ...

  4. Laravel 使用 scout 集成 elasticsearch 做全文搜索

    安装需要的组件 composer require tamayo/laravel-scout-elastic composer require laravel/scout 如果composer requ ...

  5. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(三)

    上一篇地址:https://blog.csdn.net/huangfenhu/article/details/94009241 创建一个文章表和文章模型: php artisan make:model ...

  6. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(二)

    上一篇环境搭建地址:https://blog.csdn.net/huangfenhu/article/details/94004316 安装Scout 进入laravel项目的根目录使用compose ...

  7. Laravel 以ElasticSearch的方式使用scout

    Laravel5.3已经发布了,这次版本多了一个官方工具包:scout.这个包的作用就是帮助大家更好的将全文检索工具和项目更好的结合,让开发者使用起来更方便.但是我发现了一个问题:Laravel官方文 ...

  8. laravel Scout包在elasticsearch中的应用

    laravel Scout包在elasticsearch中的应用 2017-04-05 15:14 by 轩脉刃, ... 阅读, ... 评论, 收藏, 编辑 laravel Scout包在elas ...

  9. Laravel5.4中文分词搜索-使用 Laravel Scout,Elasticsearch,ik 分词(一)

    elasticsearch需要的环境搭建 简介: 使用elasticsearch的前提是你的主机必须安装了java的JDK,而且版本必须是1.8以上,并设置JAVA_HOME环境变量 java的jdk ...

最新文章

  1. python时间日期字符串各种
  2. ZooKeeper伪分布式集群安装
  3. nv4_disp.dll 蓝屏
  4. 什么是SVC模式【转】
  5. 在Winform程序中设置管理员权限及为用户组添加写入权限
  6. Python数据结构之四——set(集合)
  7. 从通用分页存储过程[ROWCOUNT方式]抽出适合自己需求的分页过程
  8. PLSQL Developer图形化窗口创建数据库全过程
  9. java Math类
  10. 不得不收藏的大数据Hadoop教程:Hadoop集群搭建
  11. c语言万年历查询程序代码,C语言实现万年历程序的代码分享
  12. 球面绘制六边形——二维平面坐标转成三维球面坐标
  13. python中cnt是什么意思_CNT是什么意思
  14. git fetch - git merge - git pull 指令
  15. UOJ #11.【UTR #1】ydc的大树 题解
  16. SpringBoot在controller返回一个HTML页面
  17. 利用转写软件进行高效记录
  18. GitLab分支介绍
  19. 不可随便给一个人说晚安『你知道它的真正意义吗?不想以后后悔就进来看看吧』
  20. python 头条号_python爬取今日头条收藏目录

热门文章

  1. python笔记2—day2
  2. 【微信公众号】7、SpringBoot整合WxJava新增临时、永久素材
  3. 南阳理工题目---218Dinner
  4. 最近很火的OkHttp剥洋葱系列
  5. 模糊数学在计算机方面的应用,模糊数学理论在图像处理中的应用
  6. 利用ADB固定Android手机的CPU频率
  7. 字符串小写转大写字母
  8. BandiZip解压工具
  9. 通过SqlDbx导出*.sql,然后倒入到SQLServer2005
  10. html里如何定位背景图片,Html+Css CSS中背景图片定位方法