Elasticsearch-PHP 快速开始
快速开始
本章节会给你一个客户端的主要功能(函数)是如何工作的快速概述。
安装
- 引入(包含)elasticsearch-php 在你的 composer.json 文件:
- {
- "require": {
- "elasticsearch/elasticsearch": "~1.0"
- }
- }
- 使用composer安装客户端:
- curl -s http://getcomposer.org/installer | php
- php composer.phar install
- 在主项目(一般是index.php)中引入autoloader.php文件(如果你还没有引入的话),并且要实例化Elasticsearch的客户端:
- require 'vendor/autoload.php';
- $client = new Elasticsearch\Client();
索引一个文档
在elasticsearch-php中,几乎所有的东西都是通过数组配置的。REST 的端点(终结点),文档和可选参数,一切都是一个关联数组。
去索引一个文档,我们简单的指定一个主体(body)来包含我们希望索引的文档。文档中的每一个字段都由一个关联数组的键/值对表示。
索引(index),类型(type)和 ID 也被指定在数组参数中,数组如下:
- $params = array();
- $params['body'] = array('testField' => 'abc');
- $params['index'] = 'my_index';
- $params['type'] = 'my_type';
- $params['id'] = 'my_id';
- $ret = $client->index($params);
获取一个文档
让我们来获取我们刚刚索引的文档:
- $getParams = array();
- $getParams['index'] = 'my_index';
- $getParams['type'] = 'my_type';
- $getParams['id'] = 'my_id';
- $retDoc = $client->get($getParams);
搜索一个文档
搜索是 elasticsearch 的一个标志,所以让我们执行搜索。我们打算使用匹配查询作为示范:
- $searchParams['index'] = 'my_index';
- $searchParams['type'] = 'my_type';
- $searchParams['body']['query']['match']['testField'] = 'abc';
- $retDoc = $client->search($searchParams);
删除一个文档
好的,让我们继续删除一个我们之前添加的文档:
- $deleteParams = array();
- $deleteParams['index'] = 'my_index';
- $deleteParams['type'] = 'my_type';
- $deleteParams['id'] = 'my_id';
- $retDelete = $client->delete($deleteParams);
删除一个索引
由于 elasticsearch 的动态性质,我们添加第一个文档的时候自动创建了索引和一些默认设置。让我们删除这个索引,因为我们以后想要指定自己的设置:
- $deleteParams = array();
- $deleteParams['index'] = 'my_index';
- $client->indices()->delete($deleteParams);
创建一个索引
好吧,我们的索引被清空了,现在我们开始添加一个新的索引和一些自定义设置:
- $indexParams['index'] = 'my_index';
- $indexParams['body']['settings']['number_of_shards'] = 2;
- $indexParams['body']['settings']['number_of_replicas'] = 0;
- $client->indices()->create($indexParams);
总结
那些只是在客户端速成课程和语法上的概述。如果你熟悉elasticsearch, 你会注意到,这些方法的命名就像 REST 的端点(终结点)。
你还会发现客户端的配置方式使你发现通过你的IDE配置会非常方便。所有的核心操作都在 $client 对象(索引,搜索,获取等)下。索引和集群管理分别位于 $client->indices() 和 $client->cluster() 对象下。
查看剩下的文档去了解整个客户端是如何工作的。
例子代码
- <?php
- require 'vendor/autoload.php';
- $client = new Elasticsearch\Client();
- index($client);
- //get($client);
- // search($client);
- // deleteDoc($client);
- // deleteIndex($client);
- // createIndex($client);
- function index($client) {
- $params = array ();
- $params ['body'] = array (
- 'testField' => 'abc'
- );
- $params ['index'] = 'my_index';
- $params ['type'] = 'my_type';
- $params ['id'] = 'my_id';
- try {
- $ret = $client->index($params);
- println("create index success");
- } catch(Exception $e) {
- echo $e->getMessage();
- }
- }
- function get($client) {
- $getParams = array ();
- $getParams ['index'] = 'my_index';
- $getParams ['type'] = 'my_type';
- $getParams ['id'] = 'my_id';
- $retDoc = $client->get($getParams);
- println($retDoc);
- }
- function search($client) {
- $searchParams ['index'] = 'my_index';
- $searchParams ['type'] = 'my_type';
- $searchParams ['body'] ['query'] ['match'] ['testField'] = 'abc';
- $retDoc = $client->search($searchParams);
- println($retDoc);
- }
- function deleteDoc($client) {
- $deleteParams = array ();
- $deleteParams ['index'] = 'my_index';
- $deleteParams ['type'] = 'my_type';
- $deleteParams ['id'] = 'my_id';
- $retDelete = $client->delete($deleteParams);
- println($retDelete);
- }
- function deleteIndex($client) {
- $deleteParams = array ();
- $deleteParams ['index'] = 'my_index';
- $retDelete = $client->indices()->delete($deleteParams);
- println($retDelete);
- }
- function createIndex($client) {
- $indexParams ['index'] = 'my_index';
- $indexParams ['body'] ['settings'] ['number_of_shards'] = 2;
- $indexParams ['body'] ['settings'] ['number_of_replicas'] = 0;
- $retCreate = $client->indices()->create($indexParams);
- println($retCreate);
- }
- function println($var) {
- echo "<br>";
- $type = gettype($var);
- if ($type == "array" || $type == "object") {
- echo json_encode($var);
- } else {
- echo $var;
- }
- echo "<br>";
- }
查看每个方法的运行结果:
index():
- create index success
get():
- {
- "_index": "my_index",
- "_type": "my_type",
- "_id": "my_id",
- "_version": 1,
- "found": true,
- "_source": {
- "testField": "abc"
- }
- }
search():
- {
- "took": 3,
- "timed_out": false,
- "_shards": {
- "total": 5,
- "successful": 5,
- "failed": 0
- },
- "hits": {
- "total": 1,
- "max_score": 0.30685282,
- "hits": [
- {
- "_index": "my_index",
- "_type": "my_type",
- "_id": "my_id",
- "_score": 0.30685282,
- "_source": {
- "testField": "abc"
- }
- }
- ]
- }
- }
deleteDoc():
- {
- "found": true,
- "_index": "my_index",
- "_type": "my_type",
- "_id": "my_id",
- "_version": 2
- }
deleteIndex():
- {
- "acknowledged": true
- }
createIndex():
- {
- "acknowledged": true
- }
Elasticsearch-PHP 快速开始的更多相关文章
- logstash+elasticsearch+kibana快速搭建日志平台
使用logstash+elasticsearch+kibana快速搭建日志平台 日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: 根据关键字查询日 ...
- 使用logstash+elasticsearch+kibana快速搭建日志平台
日志的分析和监控在系统开发中占非常重要的地位,系统越复杂,日志的分析和监控就越重要,常见的需求有: * 根据关键字查询日志详情 * 监控系统的运行状况 * 统计分析,比如接口的调用次数.执行时间.成功 ...
- Elasticsearch【快速入门】
前言:毕设项目还要求加了这个做大数据搜索,正好自己也比较感兴趣,就一起来学习学习吧! Elasticsearch 简介 Elasticsearch 是一个分布式.RESTful 风格的搜索和数据分析引 ...
- 【转载】使用logstash+elasticsearch+kibana快速搭建日志平台
原文链接:http://www.cnblogs.com/buzzlight/p/logstash_elasticsearch_kibana_log.html 日志的分析和监控在系统开发中占非常重要的地 ...
- elasticsearch的快速安装
在阿里云服务器快速安装ElasticSearch 1.安装好java的jdk环境 2.使用wget下载elasticsearch安装包,wget的速度比较满,如果等不及的话,可以先下载好安装包再上传解 ...
- 3.1_springboot2.x检索之elasticsearch安装&快速入门
1.elasticsearch简介&安装 1.1.1.elasticsearch介绍 我们的应用经常需要添加检索功能,开源的 ElasticSearch 是目前全文搜索引擎的首选.他可以快 ...
- 如何通过Elasticsearch Scroll快速取出数据,构造pandas dataframe — Python多进程实现
首先,python 多线程不能充分利用多核CPU的计算资源(只能共用一个CPU),所以得用多进程.笔者从3.7亿数据的索引,取200多万的数据,从取数据到构造pandas dataframe总共大概用 ...
- 使用Elasticsearch Operator快速部署Elasticsearch集群
转载自:https://www.qikqiak.com/post/elastic-cloud-on-k8s/ 随着 kubernetes 的快速发展,很多应用都在往 kubernetes 上面迁移,现 ...
- Elasticsearch的快速使用——Spring Boot使用Elastcisearch, 并且使用Logstash同步mysql和Elasticsearch的数据
我主要是给出一些方向,很多地方没有详细说明.当时我学习的时候一直不知道怎么着手,花时间找入口点上比较多,你们可以直接顺着方向去找资源学习. 如果不是Spring Boot项目,那么根据Elastics ...
- (转)开源分布式搜索平台ELK(Elasticsearch+Logstash+Kibana)入门学习资源索引
Github, Soundcloud, FogCreek, Stackoverflow, Foursquare,等公司通过elasticsearch提供搜索或大规模日志分析可视化等服务.博主近4个月搜 ...
随机推荐
- Linux 权限使用 777 真的好吗?
Linux 权限使用 777 真的好吗? 开发环境当然不是问题,但是会造成一个习惯,到生产时也容易经常配置成 777. 777 权限可以让你的项目出现很大安全问题.1 linux 775和777权限有 ...
- spring深入内容
https://www.ibm.com/developerworks/cn/java/j-lo-spring-principle/index.html
- C# Socket Post File
///<summary> ///向服务器发送混合型的请求,1:成功发送,0:发送失败 ///</summary> ///<param name="paranam ...
- 从wiresharp看tcp三次握手
我们知道,传输层是OSI模型中用户进行数据传输的分层,目前仅有TCP和UDP两种协议可用.TCP为了进行传输控制,引入了三次握手机制,以确保通信连接的建立.道理很简单,我们跟别人打电话聊天时,对方拿起 ...
- linux下使用tar命令详解
解压语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项: c 创建新的档案文件.如果用户想备份一个目录或 ...
- DataTable 树形构造加全部
DataTable dtGx = new DataTable(); dtGx = SqlHelper.SqlGetDataTable(StrSql, "tbUserGx"); th ...
- ES6中的新特性
本人最近学习es6一些方法,难免有些手痒,想着能不能将这些方法总结下,如下 1.数组的扩展 1)首先什么是伪数组 无法直接调用数组方法或期望length属性有什么特殊的行为,但仍可以对真正数组遍历方法 ...
- Resource interpreted as Document but transferred with MIME type application/json laravel异常请求返回警告
一般情况下,laravel在方法里可以向前端返回数组格式 return [], 框架可以自动将数组转成JSON字符串返回,但浏览器会报MIME类型警告, 如是做APP接口可以忽视该警告: 但在前端aj ...
- linux文件权限,用户和组
文件权限 默认权限分配 umask umask是通过八进制的数值来定义用户创建文件或目录的默认权限的 安全权限的临界点是,文件默认权限是644,目录默认权限是755 [root@Poppy joker ...
- 【BZOJ】2006: [NOI2010]超级钢琴(前缀和+RMQ+堆)
题目 传送门:QWQ 分析 又不会做....... 显然很好想到前缀和处理一下. 然后考虑最大化结果,直接上st表. 问题来了,然后呢? 怎么做$ length \in [l,r] $ 呢? 正解是 ...