elasticsearch和php,快速开始 | Elasticsearch-PHP | Elastic

快速开始edit

这一节会概述一下客户端以及客户端的一些主要方法的使用规则。

在 composer.json 文件中引入 elasticsearch-php:

{

"require": {

"elasticsearch/elasticsearch": "~6.0"

}

}

用 composer 安装客户端:

curl -s http://getcomposer.org/installer | php

php composer.phar install --no-dev

在项目中引入自动加载文件(如果还没引入),并且实例化一个客户端:

require 'vendor/autoload.php';

use Elasticsearch\ClientBuilder;

$client = ClientBuilder::create()->build();

索引一个文档edit

在 elasticsearch-php 中,几乎一切操作都是用关联数组来配置。REST 路径(endpoint)、文档和可选参数都是用关联数组来配置。

为了索引一个文档,我们要指定4部分信息:index,type,id 和一个 body。构建一个键值对的关联数组就可以完成上面的内容。body 的键值对格式与文档的数据保持一致性。(译者注:如 ["testField" ⇒ "abc"] 在文档中则为 {"testField" : "abc"}):

$params = [

'index' => 'my_index',

'type' => 'my_type',

'id' => 'my_id',

'body' => ['testField' => 'abc']

];

$response = $client->index($params);

print_r($response);

收到的响应数据表明,你指定的索引中已经创建好了文档。响应数据是一个关联数组,里面的内容是 Elasticsearch 返回的decoded JSON 数据:

Array

(

[_index] => my_index

[_type] => my_type

[_id] => my_id

[_version] => 1

[result] => created

[_shards] => Array

(

[total] => 2

[successful] => 1

[failed] => 0

)

[_seq_no] => 0

[_primary_term] => 1

)

获取一个文档edit

现在获取刚才索引的文档:

$params = [

'index' => 'my_index',

'type' => 'my_type',

'id' => 'my_id'

];

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

print_r($response);

响应数据包含一些元数据(如 index,type 等)和 _source 属性,

这是你发送给 Elasticsearch 的原始文档数据。

Array

(

[_index] => my_index

[_type] => my_type

[_id] => my_id

[_version] => 1

[found] => 1

[_source] => Array

(

[testField] => abc

)

)

搜索一个文档edit

搜索是 elasticsearch 的一大特色,所以我们试一下执行一个搜索。我们准备用 Match 查询来作为示范:

$params = [

'index' => 'my_index',

'type' => 'my_type',

'body' => [

'query' => [

'match' => [

'testField' => 'abc'

]

]

]

];

$response = $client->search($params);

print_r($response);

这个响应数据与前面例子的响应数据有所不同。这里有一些元数据(如 took, timed_out 等)和一个 hits 的数组,这代表了你的搜索结果。而 hits 内部也有一个 hits 数组,内部的 hits 包含特定的搜索结果:

Array

(

[took] => 16

[timed_out] =>

[_shards] => Array

(

[total] => 5

[successful] => 5

[skipped] => 0

[failed] => 0

)

[hits] => Array

(

[total] => 1

[max_score] => 0.2876821

[hits] => Array

(

[0] => Array

(

[_index] => my_index

[_type] => my_type

[_id] => my_id

[_score] => 0.2876821

[_source] => Array

(

[testField] => abc

)

)

)

)

)

删除一个文档edit

好了,现在我们看一下如何把之前添加的文档删除掉:

$params = [

'index' => 'my_index',

'type' => 'my_type',

'id' => 'my_id'

];

$response = $client->delete($params);

print_r($response);

你会注意到删除文档的语法与获取文档的语法是一样的。唯一不同的是 delete 方法替代了 get 方法。下面响应数据代表文档已被删除:

Array

(

[_index] => my_index

[_type] => my_type

[_id] => my_id

[_version] => 2

[result] => deleted

[_shards] => Array

(

[total] => 2

[successful] => 1

[failed] => 0

)

[_seq_no] => 1

[_primary_term] => 1

)

删除一个索引edit

由于 elasticsearch 的动态特性,我们创建的第一个文档会自动创建一个索引,同时也会把 settings 里面的参数设定为默认参数。由于我们在后面要指定特定的 settings,所以现在要删除掉这个索引:

$deleteParams = [

'index' => 'my_index'

];

$response = $client->indices()->delete($deleteParams);

print_r($response);

响应数据是:

Array

(

[acknowledged] => 1

)

创建一个索引edit

由于数据已被清空,我们可以重新开始了,现在要添加一个索引,同时要进行自定义 settings:

$params = [

'index' => 'my_index',

'body' => [

'settings' => [

'number_of_shards' => 2,

'number_of_replicas' => 0

]

]

];

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

print_r($response);

Elasticsearch会创建一个索引,并配置你指定的参数值,然后返回一个消息确认:

Array

(

[acknowledged] => 1

[shards_acknowledged] => 1

[index] => my_index

)

本节结语edit

这里只是概述了一下客户端以及它的语法。如果你很熟悉 elasticsearch,你会注意到这些方法的命名跟 REST 路径(endpoint)是一样的。

你也注意到了客户端的参数配置从某种程度上讲也是方便你的IDE易于搜索。$client 对象下的所有核心方法(索引,搜索,获取等)都是可用的。索引管理和集群管理分别在 $client->indices() 和 $client->cluster() 中。

请查询文档的其余内容以便知道整个客户端的运作机制。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/348976.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

spring aop组件_安全性中的Spring AOP –通过方面控制UI组件的创建

spring aop组件以下文章将显示在我参与的一个项目中,我们如何使用Spring的AOP来介绍一些与安全性相关的功能。 这样的概念是,为了使用户能够看到某些UI组件,他需要具有一定级别的安全特权。 如果不满足该要求,则不会显示UICompone…

使用Spring Boot构建RESTFul服务

每个人都在谈论微服务,例如WSO2微服务框架 , Spring Boot等。由于我已经很长时间没有从事任何与Spring相关的项目了,所以我想到了使用Spring Boot实现一个简单的RESTFul服务。 因此,我从Spring文档开始。 这很简单。 您可以使用“…

php分页操作,PHP实现适用于文件内容操作的分页类

本文实例为大家分享了PHP实现文件内容操作的分页类,强调一下只针对文件的操作,供大家参考,具体内容如下class StrPage {private $current; //当前页private $file; //操作文件private $totalPage; //总的页数private $url; //传递的参数priva…

php imagemagick 文档,调用ImageMagick的PHP函数中文文档

bool imagick_writeimage([source image handle],[new name & filetype]) 写图片 UN KNOW USE imagick_writeimages new_handle imagick_clonehandle([image handle]) 复制出新句柄 image_handle imagick_image2blob([blob handle]) 将数据流数据转换成为image数据 ima…

java.util接口_Java 8中java.util.function包中的谓词和使用者接口

java.util接口在上一篇文章中,我写了关于Function接口的内容 ,它是java.util.package的一部分。 我还提到了Predicate接口,它是同一包的一部分,在这篇文章中,我将向您展示如何使用Predicate和Consumer接口。 让我们看一…

php datetime 对象,PHP DateTime 对象和 Date 函数的 Demo

DateTime对象//设置时间时区date_default_timezone_set("PRC");$dateFormat "Y-m-d";$dateTimeFormat "Y-m-d H:i:s";//获取当前时间$date new DateTime();echo $date->format($dateTimeFormat) . "\n";//时间2015-01-01加上7年…

将Swagger与Spring Boot REST API集成

在上一篇文章中,我谈到了我使用Spring Boot创建RESTFul Services的经验。 在创建REST API时,正确的文档是其中的必需部分。 昂首阔步是什么? Swagger (Swagger 2)是用于描述和记录REST API的规范。 它指定了REST Web…

php滴滴平台接口,图片服务API文档

简介滴滴云图片服务API提供标准的轻量级无状态HTTP接口,支持用户对数据的全方位管理。接口概览API描述图片信息获取文件的基本信息,包括长度、宽度、文件大小、格式。图片旋转将图片按顺时针旋转。图片模糊对图片进行模糊操作。图片缩放将图片缩小或者放…

drools。drools_Drools Planner重命名为OptaPlanner:宣布www.optaplanner.org

drools。drools我们很自豪地宣布,从版本6.0.0.Beta1开始,将Drools Planner重命名为OptaPlanner。 我们也很高兴推出其新网站: www.optaplanner.org。 OptaPlanner优化了业务资源的使用。 每个组织都面临计划方面的问题:以有限的有…

php gridview,PHP编程:yii2-GridView在开发中常用的功能及技巧总结

《PHP编程:yii2-GridView在开发中常用的功能及技巧总结》要点:本文介绍了PHP编程:yii2-GridView在开发中常用的功能及技巧总结,希望对您有用。如果有疑问,可以联系我们。相关主题:YII框架数据网格或者说 Gr…

Spring Boot – spring.config.name –案例研究

当必须在不同配置中使用相同的应用程序代码时,外部化Spring Boot应用程序属性会很有用。 如果spring.config.location配置远离源代码(无论如何spring.config.location被认为是最佳实践), spring.config.location环境属性可以用于指…

java遇上html,JAVA遇见HTML——JSP篇:JSP内置对象(上)

JSP九大内置对象JSP内置对象是Web容器创建的一组对象,不使用new关键就可以使用的内置对象。int[] value{60,70,80};for(int i:value){out.println(i);}%>Web程序的请求响应模式用户发送请求(request)服务器给用户响应(response)out对象:out对象是JspW…

java中接口文件创建_功能接口简介–在Java 8中重新创建的概念

java中接口文件创建世界各地的所有Java开发人员都将至少使用以下接口之一:java.lang.Runnable,java.awt.event.ActionListener,java.util.Comparator,java.util.concurrent.Callable。 声明的接口之间有一些共同的特征&#xff0c…

java手动注册filter,SpringBoot如何注册Servlet、Filter、Listener的几种方式

在Servlet 3.0之前都是使用web.xml文件进行配置,需要增加Servlet、Filter或者Listener都需要在web.xml增加相应的配置。Servlet 3.0之后可以使用注解进行配置Servlet、Filter或者Listener;springboot也提供了使用代码进行注册Servlet、Filter或者Listene…

Java命令行界面(第12部分):CLAJR

第十二篇有关在Java中处理命令行参数的文章的特色库是带有Java Reflection的命令行参数 (CLAJR)。 该“库”是单个Java源文件( CLAJR-0.9.java ), 可从SourceForge下载 。 CLAJR的主页当前显示2006年版权日期&#xff…

php xml相关函数方法,php中对xml读取的相关函数的介绍一

对象 XML解析函数 描述元素 xml_set_element_handler() 元素的开始和结束字符数据 xml_set_character_data_handler() 字符数据的开始外部实体 xml_set_external_entity_ref_handler() 外部实体出现未解析外部实体 xml_set_unparsed_entity_decl_handler() 未解析的外部实体出现…

java调用oracle的函数,从Java调用Oracle函数

我有以下功能规格:FUNCTION FUNC_GET_SOMETHING_FROM_DATABASE ( IN_parameter1 IN VARCHAR2,IN_parameter2 IN VARCHAR2,IN_parameter3 IN VARCHAR2,IN_parameter4 IN VARCHAR2,IN_parameter5 IN VARCHAR2,IN_parameter6 IN VARCHAR2)RETURN REFCURTYP;以下是我在J…

specs.4.8.gz_使用Specs2和客户端API 2.0进行富有表现力的JAX-RS集成测试

specs.4.8.gz毫无疑问, JAX-RS是一项杰出的技术。 即将发布的规范JAX-RS 2.0带来了更多的强大功能,尤其是在客户端API方面。 今天的帖子的主题是JAX-RS服务的集成测试。 有很多优秀的测试框架,例如REST,可以确保提供帮助&#xff…

了解OAuth2令牌认证

1.简介 在本教程中,我们将了解OAuth2令牌身份验证 ,以便只有经过身份验证的用户和应用程序才能获得有效的访问令牌,该令牌随后可用于访问服务器上的授权API(在OAuth术语中仅是受保护的资源)。 使用基于令牌的身份验证…

matlab 冒泡排序函数,Matlab排序算法-遍历排序、冒泡排序

Before Sort: x 2 1 3 4 6 8 5 7 9------------------------------遍历排序,循环8次,第7次得到结果:1. Sort: x 1 2 3 4 6 8 5 7 92. Sort: x 1 2 3 4 6 8 5 7 93. Sort: x 1 2 3 4 6 8 5 7 94. Sort: x 1 2 3 4 6 8 5 7 95. Sort: x 1…