ElasticSearch的基本使用一_MT006的博客-CSDN博客_$this->client->bulk


本站和网页 https://blog.csdn.net/qq_41318650/article/details/103158409 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

ElasticSearch的基本使用一_MT006的博客-CSDN博客_$this->client->bulk
ElasticSearch的基本使用一
MT006
于 2019-11-20 12:06:23 发布
442
收藏
分类专栏:
Elastic Search
文章标签:
Elastic Search
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_41318650/article/details/103158409
版权
Elastic Search
专栏收录该内容
3 篇文章
0 订阅
订阅专栏
一 使用composer给项目中安装ES
ssh xxx  连接到项目所在的服务器
cd /home/wwwroot/xxx 进入到项目艮目录
composer require elasticsearch/elasticsearch   使用composer安装es
二 创建ES实例
新建一个Esearch.php来进行测试
<?php namespace app\index\controller;use Elasticsearch\ClientBuilder;
class Esearch {     private $client;     public function __construct() {         if (!empty($this->client)) {             return $this->client;         }
        $this->client = ClientBuilder::create()->build();     }
三 基本使用
1 创建一个ES索引
核心函数:$this->client->indices()->create($params);
下面的代码创建了一个'mt001'的索引,相当于创建了一个‘mt001’的数据库。还创建了一个‘test’的类型,相当于创建了1个‘test’的表。'body'里面可以放一些基础设置‘settings’,另外放了一个‘mappings’,相当于定义了表结构。
代码如下:
public function create_index() {                  $params = [             'index' => 'mt001',        //索引名称,相当于数据库的 datebase             // 'type' => 'test',    //类型名称,相当于数据库的 tables             // 'id' => 12,            //相当于数据库tables中,主键id为12的数据             'body' => [                 'settings' => [                     'number_of_shards' => 3,    //是数据分片数,默认为5,有时候设置为3                     'number_of_replicas' => 0,  //数据库备份数 如果只有一台机器,设置为0                     'analysis' => [                //分析器                         'filter' => [                             'shingle' => [                                 'type' => 'shingle'                             ]                         ],                         'char_filter' => [                             'pre_negs' => [                                 'type' => 'pattern_replace',                                 'pattern' => '(\\w+)\\s+((?i:never|no|nothing|nowhere|noone|none|not|havent|hasnt|hadnt|cant|couldnt|shouldnt|wont|wouldnt|dont|doesnt|didnt|isnt|arent|aint))\\b',                                 'replacement' => '~$1 $2'                             ],                             'post_negs' => [                                 'type' => 'pattern_replace',                                 'pattern' => '\\b((?i:never|no|nothing|nowhere|noone|none|not|havent|hasnt|hadnt|cant|couldnt|shouldnt|wont|wouldnt|dont|doesnt|didnt|isnt|arent|aint))\\s+(\\w+)',                                 'replacement' => '$1 ~$2'                             ]                         ],                         'analyzer' => [                             'reuters' => [                                 'type' => 'custom',                                 'tokenizer' => 'standard',                                 'filter' => ['lowercase', 'stop', 'kstem']                             ]                         ]                     ]                 ],                 'mappings' => [                                //文档模板                     '_default_' => [                        //默认配置                         'properties' => [                    //属性,类似于数据的字段名                             'id' => [                                 'type' => 'integer',                                 // 'analyzer' => 'reuters',                                 // 'term_vector' => 'yes',                                 // 'copy_to' => 'combined'                             ],                             'name' => [                                 'type' => 'text',                                 'analyzer' => 'reuters',                                 'term_vector' => 'yes',                                 // 'copy_to' => 'combined'                             ],                             'profile' => [                                 'type' => 'text',                                 'analyzer' => 'reuters',                                 'term_vector' => 'yes'                             ],                             'age' => [                                 'type' => 'integer',                                 'index' => 'false'                             ]                         ]                     ],                     // 'my_type' => [                            //自己的配置                     //     'properties' => [                     //         'my_field' => [                     //             'type' => 'text'                     //         ]                     //     ]                     // ]                 ]             ]         ];
        // Create the index         $response = $this->client->indices()->create($params);         var_dump($response);     }
2 获取和删除某个索引的内容
public function get_index() {         $params = [             'index' => 'mt001'         ];         $response = $this->client->indices()->getMapping($params);         var_dump($response);die();     }
    public function del_index($index_name='mt001') {         $params = ['index' => $index_name];         $response = $this->client->indices()->delete($params);         var_dump($response);     }
3 单条数据添加文档(数据)
相当于给表里添加数据
核心函数: $this->client->index($params);
代码如下:
//测试添加数据到指定的index,type中     public function testadd() {         $docs = [];         $docs[] = ['id'=>1,'name'=>'小明','profile'=>'我做的ui界面强无敌。','age'=>23];         $docs[] = ['id'=>2,'name'=>'小张','profile'=>'我的php代码无懈可击。','age'=>24];         $docs[] = ['id'=>3,'name'=>'小王','profile'=>'C的生活,快乐每一天。','age'=>29];         $docs[] = ['id'=>4,'name'=>'小赵','profile'=>'就没有我做不出的前端页面。','age'=>26];         $docs[] = ['id'=>5,'name'=>'小吴','profile'=>'php是最好的语言。','job'=>21];         $docs[] = ['id'=>6,'name'=>'小翁','profile'=>'别烦我,我正在敲bug呢!','age'=>25];         $docs[] = ['id'=>7,'name'=>'小杨','profile'=>'为所欲为,不行就删库跑路','age'=>27];         $i = 0;         foreach ($docs as $key => $v) {             echo $i;             $i++;             $r = $this->add_doc($v['id'], $v, 'mt001', 'users');         }     }
    public function add_doc($id,$doc,$index_name = 'mt001',$type_name = 'users') {
        $params = [             'index' => $index_name,             'type' => $type_name,             'id' => $id,             'body' => $doc         ];           $response = $this->client->index($params);         // return $response;     }
4 多条数据添加文档(数据)
相当于给表里添加数据
核心函数: $this->client->bulk($params);
//测试添加多天数据到指定的index,type中     public function testaddmulti() {         $docs = [];         $docs[] = ['id'=>111,'name'=>'小明m','profile'=>'我做的ui界面强无敌。','age'=>23];         $docs[] = ['id'=>112,'name'=>'小张m','profile'=>'小明的php代码无懈可击。','age'=>24];         $docs[] = ['id'=>113,'name'=>'小王m','profile'=>'C的生活,快乐每一天。','age'=>29];         $docs[] = ['id'=>114,'name'=>'小赵m','profile'=>'就没有我做不出的前端页面。','age'=>26];         $docs[] = ['id'=>115,'name'=>'小吴m','profile'=>'php是最好的语言。','job'=>21];         $docs[] = ['id'=>116,'name'=>'小翁m','profile'=>'别烦我,我正在敲bug呢!','age'=>25];         $docs[] = ['id'=>117,'name'=>'小杨m','profile'=>'为所欲为,不行就删库跑路','age'=>27];         $i = 0;         foreach ($docs as $key => $v) {             $params['body'][] = [                 'index' => [                     '_index' => 'mt001',        //相当于数据库名                     '_type' => 'users',            //相当于表名                     '_id' => $v['id'],            //主键ID                 ]             ];
            $params['body'][] = $v;         }         $responses = $this->client->bulk($params);     }
5 获取某个文档(数据)
相当于select某条数据
核心函数: $this->client->get($params);
public function get_doc($index='mt001', $type='users', $id=1) {
        $params = [             'index' => $index,             'type' => $type,             'id' => $id,         ];
        // var_dump($this->client);die();         $response = $this->client->get($params);         var_dump($response);     }
MT006
关注
关注
点赞
收藏
打赏
评论
ElasticSearch的基本使用一
一 使用composer给项目中安装ESssh xxx 连接到项目所在的服务器cd /home/wwwroot/xxx 进入到项目艮目录composer require elasticsearch/elasticsearch 使用composer安装es二 创建ES实例新建一个Esearch.php来进行测试<?phpnamespace app\index...
复制链接
扫一扫
专栏目录
php-elasticsearch使用时的踩坑【完结】
PHPerJiang
09-17
1386
2019.09.17 16:30:00
创建索引/修改配置
//创建索引
public function create_index(){
$params = [
'index' => 'my_index',
'body' => [
'settings' => [
'number_of_shards' => 2,
...
go语言批量bulk操作elasticsearch8报错解决:The bulk request must be terminated by a newline [\n],es8bulk批量插入问题解决
最新发布
weixin_42151366的博客
10-12
876
go语言批量bulk操作elasticsearch8报错解决The bulk request must be terminated by a newline [\n]问题
参与评论
您还未登录,请先
登录
后发表或查看评论
elasticsearch基本用法(php)
qq_38257857的博客
03-16
418
// 创建索引
$index = [
'index ' => 'ceshi2',
'body' => [
'settings' => [
'number_of_shards' => 4,
...
现在的代码,贴一下
weixin_34090643的博客
06-15
43
<?php
/**
* Created by PhpStorm.
* User: user
* Date: 14-9-19
* Time: 上午11:12
*/
namespace Application\chinalao\esengine;
use Application\Config\config;
use Elasticsearch\Client;
...
swoole深入学习 2. tcp Server和tcp Client
dianfu2892的博客
07-02
96
这节来学习Swoole最基础的Server和Client。会通过创建一个tcp Server来讲解。
server
<?php
class Server
private $serv;
public function __construct()
$this->serv = new Swoole\S...
php v9 邮箱登陆,转:PHPCMS v9支持Email登陆的方法最新版2015
weixin_42410317的博客
04-10
29
在网上找了一大堆的方法,都是有各种问题,在结合网上的方法 别人给的方法,摸索出了一套自己的方法,不一定登陆的时候非要用户名跟邮箱都一个字段来判断,我加一个类型的字段不就行了。这样在接收擦数的时候根据类型判断接收到的是用户名还是邮箱 再各自判断,下面上代码了1、先打开/phpcms/templates/default/member/login.html在用户名的input前面加上如下类型 判断传送出...
php操作ElasticSearch7.x bulk,批量插入数据
weixin_42681513的博客
04-24
1264
ES7.x批量插入数据
这是以书来举列子
我们先看restful的写法
写完之后千万记得换行,记得换行,记得换行,重要事情说3遍
POST XXX/_bulk
{"create":{"_index":"dangdang","_type":"_doc","_id":"123"}}
{"book_name":"php","book_img":"963.jpg","subtitle":"没有副标题","...
Swoole 源码分析——Client模块之Send
weixin_33829657的博客
10-09
225
前言
上一章我们说了客户端的连接 connect,对于同步客户端来说,连接已经建立成功;但是对于异步客户端来说,此时可能还在进行 DNS 的解析,onConnect 回调函数还未执行。
本节中,我们将继续说明客户端发送数据的流程,同时我们可以看到 TCP 异步客户端执行 onConnect 回调函数的过程。
send 入口
本入...
Swoole 实例二(Task功能)
weixin_34268310的博客
11-10
159
直接上代码服务端代码(server.php)<?php
/*
swooleTask运行实例
Task简介
Swoole的业务逻辑部分是同步阻塞运行的,如果遇到一些耗时较大的操作,例如访问数据库、广播消息等,就会影响服务器的响应速度。因此Swoole提供了Task功能,将这些耗时操作放到另外的进程去处理,当前进程继续执行后面的逻辑.
运行Task,需要在swoo...
php rest client,PHP研习社-VS Code 扩展巡礼-REST Client
weixin_36389335的博客
03-27
87
基本介绍REST Client 是 VS Code 商店的一个 HTTP 访问扩展,官方地址 REST Client,用于模拟 HTTP请求。我们可以在官方介绍中关注两点1 基本的 HTTP 请求模拟,HTTP 输入和 HTTP 响应2 VS Code 自带的辅助功能,如自动补全 Http Content-Type 等信息REST Client 的优势REST Client 是一个 Http 请求...
PHPCMS整合UCENTER后登陆问题
hubu2006的专栏
10-12
674
PHPCMS整合UCENTER后我们会经常有修改用户密码问题,你会发现如果在Ucenter中直接修改密码后,PHPCMS用新密码无法登陆了。其实这是因为密码没同步的原因,下面讲解下登陆流程:
登陆会调用module/member/index.php的login方法
如果开启了PHPSSO,则会调用$status =
$this->client->ps_member_login($username,
elasticsearch php 批量更新
junqing124的专栏
08-13
746
$client = ClientBuilder::create()->build();
$list = $db->execute("select * from user limit 100");
if(!$list)
echo "完成";
break;
$params['body'] = array();
foreach($list as $info)
$params['body'][] = array(
'index' => arr.
php redis返回值,redis 通信协议,php实现redis协议
weixin_34900026的博客
03-09
131
redis通信协议redis通信协议由tcp协议进行数据交互,默认端口为6379请求Redis 服务器接受命令以及命令的参数。服务器会在接到命令之后,对命令进行处理,并将命令的回复传送回客户端。命令格式为:*CRLF$CRLFCRLF...$CRLFCRLF命令本身也作为协议的其中一个参数来发送。例如:setationcicotcp原始数据打印为:string(34)"*3$3se...
PHP 网络请求插件 Guzzle
gws813539162的博客
03-05
135
Guzzle是一个PHP的HTTP客户端,用来轻而易举地发送请求,并集成到我们的WEB服务上。Guzzle提供了简单的接口,构建查询语句、POST请求、分流上传下载大文件、使用HTTP cookies、上传JSON数据等等。
安装
使用Composer安装:
composer require guzzlehttp/guzzle
Guzzle基本使用
<?php
namespace app\index\controller;
use think\facade\Log;
use Guzzl
Swoole 实例一(基础通讯)
weixin_33858485的博客
11-10
52
基于swoole的echo服务器服务器端:<?php
/*
swoole同步方式
newswoole_server(ip,端口)来初始化swoole_server
server运行基本配置,绑定onStart,onConnect,onReceive,onClose函数.相关的配置的内容请查看swoole官方文档
http://wiki.swoole.co...
php elasticsearch _bulk,PHP的Elasticsearch批量上传错误 – 已超出索引中的总字段数[1000]...
weixin_33994072的博客
03-11
176
我们计划在我们的一个项目中使用ElasticSearch.目前,我们正在使用我们的数据测试ElasticSearch 5.0.1.我们面临的一个问题是,当我们从MySQL表格到弹性搜索的批量上传时,我们正在获取错误…java.lang.IllegalArgumentException: Limit of total fields [1000] in index [shopfront] has be...
分布式搜索引擎elasticsearch PHP API index bulk 批量插入操作
朱振宇
07-17
3711
<?php
require '../vendor/autoload.php';
function p ($param) {
if (!is_array($param) && !is_object($param))
echo $param;
return true;
echo '';
print_r($param);
echo '';
$client
java(优化16) 15天玩转redis之第八篇
babyZeng
08-08
657
我们都知道redis追求的是简单,快速,高效,在这种情况下也就拒绝了支持window平台,
学sqlserver的时候,我们知道事务还算是个比较复杂的东西,
所以这吊毛要是照搬到redis中去,理所当然redis就不是那么简单纯碎的东西了,
但是呢,事务是我们写程序无法逃避的场景,所以redis作者折衷的写了个简化版的事务机制,下面我来扯一下它的蛋蛋。
一: 事务
Elasticsearch调用方法
南方有岛
10-18
1062
ElasticSearch全文搜索引擎 ,是一款很好的搜索框架!用来做网站的搜索,可以对数据库压力起到一定的缓解作用!
之前给大家带来的是用curl来实现的大家有兴趣可以看看
http://www.thinkphp.cn/topic/29297.html
今天这里给大家带来的是官网提供的 PHP API
整合thinkphp3.2
下载文件解压到
ThinkPHP\Libr
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:大白
设计师:CSDN官方博客
返回首页
MT006
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
原创
68万+
周排名
114万+
总排名
3065
访问
等级
129
积分
粉丝
获赞
评论
11
收藏
私信
关注
热门文章
redis4.0 主从配置 多台机器
555
ThinkPHP5.1执行流程
473
ElasticSearch的基本使用一
442
Crontab定时同步MySQL数据到ES中
431
centos7.3安装RabbitMQ,ThinkPhp安装扩展库
370
分类专栏
RabbitMQ
3篇
PHP
3篇
redis
Elastic Search
3篇
最新评论
ThinkPHP5.1执行流程
X练习生178:
总结的不错。可以可以。很强。继续加油~
redis4.0 主从配置 多台机器
程序猿杂记:
好评
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
ThinkPHP5.1执行流程
redis4.0 主从配置 多台机器
RabbitMQ使用二 工作队列
2020年1篇
2019年8篇
目录
目录
分类专栏
RabbitMQ
3篇
PHP
3篇
redis
Elastic Search
3篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
打赏作者
MT006
你的鼓励将是我创作的最大动力
¥2
¥4
¥6
¥10
¥20
输入1-500的整数
余额支付
(余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付
您的余额不足,请更换扫码支付或充值
打赏作者
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值